iOS

iOS 琐碎知识点总结(保持更新...)

2017-02-08  本文已影响40人  继续向前冲

写这篇博客的目的是为了把平时一些琐碎的知识点总结一些,不然也容易忘记。

1.数组中内容去重复

//普通做法

        if (![FeedConnArray containsObject:_ConnField.text]) {
                  [FeedConnArray addObject:_ConnField.text];
        }
//牛逼做法 一行代码去掉数组中重复的内容
self.dataList = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];

2.NS_REQUIRES_SUPER 用法

在我们定义函数是,希望子类override时必须要调用子类方法是,可以在头文件中定义函数是添加**NS_REQUIRES_SUPER **属性,添加后如果子类不调用super 编译器会报错。

/** 初始化 */
- (void)prepare NS_REQUIRES_SUPER;
/** 摆放子控件frame */
- (void)placeSubviews NS_REQUIRES_SUPER;
/** 当scrollView的contentOffset发生改变的时候调用 */
- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change NS_REQUIRES_SUPER;

3.Masonry使用技巧

Masonry 使用时都是很多属性都是相对于父控件而言,所以有时候可以节省很多书写代码。下面讲一个最基本的技巧

    //创建个UIView
    UIView * tempview = [UIView new];
    tempview.backgroundColor = [UIColor redColor];
    [self.view addSubview:tempview];
    //最基础用法,同时制定上下左右的和和需要对齐的控件的位置
    [tempview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.view).offset(20);
        make.right.equalTo(self.view).offset(-20);
        make.top.equalTo(self.view).offset(20);
        make.bottom.equalTo(self.view).offset(-20);
    }];
    //按照上一步可以简化一些代码,父控件部分可以省略
    [tempview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.offset(20);
        make.right.offset(-20);
        make.top.offset(20);
        make.bottom.offset(-20);
    }];
    

    //将上下左右简化为一步
    [tempview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.view).insets(UIEdgeInsetsMake(20, 20, 50, 50));
    }];

    //可以去掉父控件的代码
    [tempview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(UIEdgeInsetsMake(50, 50, 50, 50));
    }];

tips:使用Masonry时一定要注意使用前要制定父控件,如果不指定,百分之百崩溃。

上一篇下一篇

猜你喜欢

热点阅读