iOS 瑣碎知識點總結(保持更新...)

寫這篇博客的目的是為了把平時一些瑣碎的知識點總結一些,不然也容易忘記。

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時一定要注意使用前要制定父控件,如果不指定,百分之百崩潰。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容