iOS開發(fā)中遇到的問題 小計(jì)

事件沖突

  1. 解決scrollView的滑動(dòng)事件與子視圖按鈕事件沖突
    self.scrollView.panGestureRecognizer.delaysTouchesBegan = YES;

2.根控制器TabBarViewController的setSelectedIndex進(jìn)行切換標(biāo)簽時(shí),從標(biāo)簽的導(dǎo)航棧中跳轉(zhuǎn)到其他標(biāo)簽時(shí)出現(xiàn)的問題,底部的tabbar隱藏?

因?yàn)樾枰萷op到導(dǎo)航棧的根視圖,然后再切到其他標(biāo)簽。
pop方法一定不要使用動(dòng)畫,設(shè)置成NO,因?yàn)閯?dòng)畫在標(biāo)簽切換時(shí),未完成就會(huì)出現(xiàn)問題。
原理:設(shè)置成YES,此時(shí)pop操作會(huì)在動(dòng)畫執(zhí)行完成之后,晚與標(biāo)簽切換,此時(shí)會(huì)隱藏掉tabbar。

    [self.navigationController popToRootViewControllerAnimated:NO];

    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    [delegate.rootController setSelectedIndex:0];

3.使用Masonry進(jìn)行適配scrollview時(shí),因?yàn)闊o法通過CGSizeMake來設(shè)置它的contentSize,可以使用一個(gè)中間過渡view進(jìn)行處理。

4.滑動(dòng)時(shí)動(dòng)態(tài)獲取當(dāng)期顯示的是第幾個(gè)section,在方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView中獲取

    NSInteger section = [self.listView.tableView indexPathForRowAtPoint:CGPointMake(0, scrollView.contentOffset.y)].section;

5.更新單個(gè)cell時(shí),經(jīng)常將indexPath設(shè)置出錯(cuò),解決方式根據(jù)Section來進(jìn)行設(shè)置,既簡單有直觀,不容易出錯(cuò)

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
    
    [self.listView.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

6.設(shè)置按鈕文字靠左對(duì)齊
// 設(shè)置UIButton字體居左顯示
repostBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

// 設(shè)置button的title就距左邊10個(gè)像素的距離。
repostBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);

7.使用Masonry在給cell賦值時(shí),動(dòng)態(tài)更新lable的高度(使用了lable的寬度,而不是計(jì)算出來的寬度),發(fā)現(xiàn)frame沒有發(fā)生改變?

原因是:計(jì)算高度時(shí),lable的寬度為0,而不是真實(shí)的寬度。因?yàn)槭鞘褂肕asonry進(jìn)行的約束,然后查找原因發(fā)現(xiàn),使用Masonry進(jìn)行控件約束時(shí),不是立即調(diào)用layoutSubviews進(jìn)行布局更新,此時(shí)控件的frame都為0,需要調(diào)用layoutIfNeeded方法進(jìn)行布局更新,調(diào)用了系統(tǒng)的layoutIfNeeded方法之后,就會(huì)執(zhí)行l(wèi)ayoutSubviews進(jìn)行布局更新。
參考

8.編譯報(bào)錯(cuò)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因1:缺少支持的三方類庫。

9.collection布局
設(shè)置cell距離屏幕兩邊間隔的時(shí)候,一定要在設(shè)置size時(shí),寬度減去兩邊的間隔,然后再設(shè)置UIEdgeInsets屬性即可。

CGFloat margin = (15);
CGFloat width = (kScreenW - margin - 40)*0.5; // 40是距離屏幕的間隔
CGFloat height = width * (11/8.0);
layout.itemSize = CGSizeMake(width,height);

// 設(shè)置內(nèi)間距   top, left, bottom, right;
layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
layout.minimumLineSpacing = margin;      // 縱向Cell最小間距
layout.minimumInteritemSpacing = margin;  // 橫向Cell最小間距
圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,236評(píng)論 3 119
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,692評(píng)論 4 61
  • 放假回來已經(jīng)十五天了,然而又到了離別的時(shí)刻,明天我去佛山,我哥也要去深圳打工,昨天妹妹也去學(xué)校了,一切都在意料...
    龍集團(tuán)閱讀 382評(píng)論 0 0
  • 沫兒長得好看, 小腰纖纖,眸子閃亮。 她不知道,自己還未到這里, 就已經(jīng)有了她的傳聞。 她不知道, 她將成為一件衣...
    涼暖秋夏閱讀 161評(píng)論 0 1

友情鏈接更多精彩內(nèi)容