ios中的开发一些小工具(就是一个写UIView的自定义组件的脱离环境,可以重新使用)解耦

一般我们都是可以看到ios开发中的tableView的内容,相应的架构的书写我们应该很熟:

1、一个我们在一般的工具上都是以代理为基础,然后实现相应的点触摸的功能,也就是动手了之后的相应时间,这个要写成相应的代理让其在controller类中具体操作。(人动而界面动)

2、由于我们一般都是继承view以及其子类,所以我们是可以以视图为基准,这样我们就能够实现了有关的类似tableView的功能。(设置相应的代理,我们可以设置为代码的设置方式,也就是直接协商delegate,但是同时也通过IBOutlet这个关键字来实现可以拉得delegate的方式)

3、因为我们经常是使用xib结合的,所以我们也会实现加载xib的方法,这样我们就可以实现了相关的概念。所以我们在拉约束的时候,我们在代码中需要实现相应的常量控制。

eg:

/* Create constraints explicitly.  Constraints are of the form "view1.attr1 = view2.attr2 * multiplier + constant" 
 If your equation does not have a second view and attribute, use nil and NSLayoutAttributeNotAnAttribute.
 */
+(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

尤其是会用到这个方法。

 self.contentView.translatesAutoresizingMaskIntoConstraints = NO;  取消那个自动的布局


 [self layoutIfNeeded];  刷新布局


代理的触发就是判断一下代理是否实现了先关的方法:

 if ([_clickDelegate respondsToSelector:@selector(doubleClickButton:didSelectrightButton:)]) {
        //代理触发即为使用
        [_clickDelegate doubleClickButton:self didSelectrightButton:sender];
    }

加载xib的方法:

 [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([GMDoubleClickButton class]) owner:self options:nil];

实现对xib进行加载,有的时候我们可能会获取firstObject,这样就可以获取第一加载的界面等等


4、就是使用,我们在使用的时候经常会在storyboard或者xib中拉入一个view ,也就是工具的父类,让这个view的拥有者是写入我们工具的类名。

然后我们可以通过view界面直接拉取delegate(如果有的话),否则我们需要代码进行设置。

然后实现相应的代理方法,这样我们就可以通过相应内容来实现。实现工具的想过,完全和UItableView一样。

(可能UItableView中可能是使用了两套的,和我们写的delegate的设置有点区别,但是原理是一样的,可能在实现拉取delegate的时候和代码写的都可以,内部实现了两套方案)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值