美文网首页
ELKChainedAlloy基于OC的链式编程框架

ELKChainedAlloy基于OC的链式编程框架

作者: CircusJonathan | 来源:发表于2020-06-16 09:21 被阅读0次

基于Object-C的链式编程框架源码及 cocoapods 库在这里:ELKChainedAlloy链式编程框架库

基于Objective-C的简单易用的链式编程框架,通过.调用方法,实现快速编程。
提供常用系统控件的链式编程方法,提升开发效率,持续更新中。。。

什么是链式编程?


链式编程就是将多个方法用点语法链接起来,让代码更加简洁,可读性更强。例如我们常用的Masonry,例如下面这段添加约束的代码:

// 设置控件的宽和高都为100
make.width.height.equalTo(@100);

这句代码相当于调用了如下三个方法:

- (MASConstraint *)width {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeWidth];
}

- (MASConstraint *)height {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeHeight];
}

- (MASConstraint * (^)(id))equalTo {
    return ^id(id attribute) {
        return self.equalToWithRelation(attribute, NSLayoutRelationEqual);
    };
}

链式编程的原理就是调用的属性或者方法的返回值是调用者本身,Masonry中的链式编程的特点是方法或者属性的返回值是block,block的返回值是调用者本身,block的参数是需要处理的参数。

ELKChainedAlloy链式编程框架的方式和Masonry相同,方法和属性的返回值是block,通过block的形参传递需要处理的参数,block的返回值为调用者本身,从而实现了通过点语法链式调用方法。

ELKChainedAlloy链式编程框架的使用


集成ELKChainedAlloypods库到项目中

使用CocoaPods搜索ELKChainedAlloy开源库:

# 搜索 ELKChainedAlloy 库
pod search ELKChainedAlloy
# 如果上面的搜索语法搜不到结果,可使用下面的语法进行搜索
pod search ELKChainedAlloy --simple

在工程的Podfile 中添加如下代码:

pod 'ELKChainedAlloy'

保存并执行pod install,然后用后缀为.xcworkspace的文件打开工程。

ELKChainedAlloy框架的详细使用及说明
  • UIView
// 创建一个view,并且设置背景色,切圆角,设置border以及frame
UIView *view = [UIView elk_makeBlock:^(UIView * _Nonnull make) {
    make.elk_setBackgroundColor(UIColor.purpleColor)
    .elk_setCornerRadius(5.f)
    .elk_setMaskToBounds(YES)
    .elk_setBorderColor(UIColor.darkGrayColor)
    .elk_setBorderWidth(2.f)
    .elk_setFrameMake(30.f, 100.f, 230.f, 30.f);
}];
self.view.elk_addSubview(view);

// 也可以直接使用系统方法创建,然后使用链式设置属性
// 或者使用view1 = [UIView elk_make];方法创建UIView
UIView *view1 = [[UIView alloc] init];
view1.elk_setBackgroundColor(UIColor.cyanColor)
.elk_setCornerRadius(5.f)
.elk_setMaskToBounds(YES)
.elk_setBorderColor(UIColor.grayColor)
.elk_setBorderWidth(2.f)
.elk_setFrameMake(140.f, 100.f, 100.f, 30.f);
self.view.elk_addSubview(view1);
  • UIButton
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
// 设置Normal状态的title
button.elk_setTitle(@"编辑", UIControlStateNormal)
// 设置Highlighted状态的title
.elk_setTitleForHighlighted(@"编辑")
// 设置Highlighted状态的titleColor
.elk_setTitleColor(UIColor.greenColor, UIControlStateHighlighted)
// 设置Normal状态的titleColor
.elk_setTitleColorForNormal(UIColor.whiteColor)
// 设置字体
.elk_setTitleLabelFont([UIFont systemFontOfSize:14])
// 设置Highlighted状态的Attribute字体大小
.elk_setAttrFont([UIFont systemFontOfSize:16], UIControlStateHighlighted)
// 设置Highlighted状态的Attribute字体颜色
.elk_setAttrTitleColor(UIColor.greenColor, UIControlStateHighlighted)
// 设置Selected状态的title,字体大小,字体颜色
.elk_setTitleFontAndColor(@"完成" ,[UIFont systemFontOfSize:14], UIColor.blueColor, UIControlStateSelected)
// 设置Normal状态的image
.elk_setImageForNormal([UIImage imageNamed:@"icon_setting"])
// 设置Selected状态的image
.elk_setImage([UIImage imageNamed:@"icon_setting"], UIControlStateSelected)
// 设置Normal状态的背景图片
.elk_setBackgroundImageForNormal([UIImage imageNamed:@"elk_button_back"])
// 以SEL方式给button添加事件
.elk_addTarget(self, @selector(editBtnTouchUpInside:), UIControlEventTouchUpInside)
// 以Block方式给button添加事件
.elk_addTargetBlock(UIControlEventTouchUpOutside, ^(UIButton * _Nonnull sender) {
    NSLog(@"edit Button Touch Up Outside");
    sender.elk_setSelected(!sender.isSelected);
})
// 设置背景颜色
.elk_setBackgroundColor(UIColor.clearColor);
  • UILabel
UILabel *label = [UILabel elk_make];
// 设置text
label.elk_setText(@"林夕")
// 字体
.elk_setFont([UIFont systemFontOfSize:16])
// 字体颜色
.elk_setTextColor(UIColor.whiteColor)
// 显示行数
.elk_setNumberOfLines(1)
// 对齐方式
.elk_setTextAlignment(NSTextAlignmentCenter);
  • UIImageView
UIImageView *imgView = [[UIImageView alloc] init];
// 设置图片
imgView.elk_setImageNamed(@"imageName")
// 内容填充方式
.elk_setContentMode(UIViewContentModeScaleAspectFill)
// 背景色
.elk_setBackgroundColor(UIColor.clearColor)
.elk_setCornerRadius(36.f)
.elk_setMaskToBounds(YES)
.elk_setBorderColor(UIColor.whiteColor)
.elk_setBorderWidth(2.f);
  • UITableView (UIScrollView、UICollectionView 用法相似)
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
tableView.elk_setDelegate(self)
.elk_setDataSource(self)
.elk_setSeparatorStyle(UITableViewCellSeparatorStyleSingleLine)
.elk_setSeparatorColor(UIColor.grayColor)
.elk_setSeparatInset(UIEdgeInsetsMake(0.f, 15.f, 0.f, 15.f))
.elk_registerClassForCell(ELKTableViewCell.class, @"ELKTableViewCell");
  • UITextView
UITextView *tv = [UITextView elk_makeBlock:^(UITextView * _Nonnull make) {
    make.elk_setText(@"这里是textview,我是内容我是内容~")
    .elk_setFont([UIFont systemFontOfSize:14.f])
    .elk_setTextColor(UIColor.whiteColor)
    .elk_setTextAlignment(NSTextAlignmentLeft)
    .elk_setTag(100)
    .elk_setBackgroundColor(UIColor.redColor)
    .elk_setFrame(CGRectMake(30.f, 150.f, 280.f, 70.f));
}];
  • UITextField
UITextField *tf = [UITextField elk_makeBlock:^(UITextField * _Nonnull make) {
    UIImageView *leftView = [UIImageView elk_makeBlock:^(UIImageView * _Nonnull make) {
        make.elk_setImageNamed(@"elk_search")
        .elk_setBackgroundColor(UIColor.clearColor)
        .elk_setFrameMake(0.f, 0.f, 30.f, 30.f);
    }];
    make.elk_setText(@"我是textField,这里是内容")
    .elk_setPlaceholder(@"我是placeholder")
    .elk_setTextColor(UIColor.blueColor)
    .elk_setSysFont(14)
    .elk_setLeftViewMode(UITextFieldViewModeAlways)
    .elk_setLeftView(leftView)
    .elk_setClearButtonMode(UITextFieldViewModeWhileEditing)
    .elk_setFrameMake(30, 240.f, 280.f, 34.f)
    .elk_setBackgroundColor(UIColor.greenColor);
}];

相关文章

  • ELKChainedAlloy基于OC的链式编程框架

    基于Object-C的链式编程框架源码及 cocoapods 库在这里:ELKChainedAlloy链式编程框架...

  • iOS 链式编程

    链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。 链式编程的效果 ...

  • 常用第三方

    1.编程框架 1:基于响应式编程思想的oc。地址:https://github.com/ReactiveCocoa...

  • 像swift一样书写OC代码OC链式编程实践

    链式编程特点 链式编程 = 点语法 事物 串联 同样的hello word代码 OC和swift调用函数时候最大的...

  • OC中常用的第三方框架

    转载自CSDN 1. 编程框架 1:基于响应式编程思想的oc地址:https://github.com/React...

  • OC 链式编程

    _ config.h _ View Example 既然已经决定,就勇敢的去吧。 决定吧

  • OC:链式编程

    概念: 链式编程:将多个业务逻辑(方法)通过“.”(点号)串联起来的一种代码风格,形似链条,故称链式编程。核心思想...

  • PromiseKit框架(swift版)实践

    周所周知PromiseKit是个链式异步框架,用过 masnory的都知道链式异步的好处。该框架有OC和swift...

  • iOS项目中常用第三方库

    常用第三方 1. 编程框架 1:基于响应式编程思想的oc 地址:https://github.com/Reacti...

  • Masonry的基础使用

    Masonry 是基于UILayoutConstraint 的第三方框架,采用链式编程的方式提供给开发者API。M...

网友评论

      本文标题:ELKChainedAlloy基于OC的链式编程框架

      本文链接:https://www.haomeiwen.com/subject/odhlxktx.html