最近看到的需要整理的內(nèi)容(2)

工作中遇到的問題2

***.h file not found

進入Build Settings -> Search Paths 更改路徑

cell自動計算高度

1、用約束進行約束自動計算之后,可能會有約束警告,這樣的話,在我們拖動tableView的時候不停的進行刷新,會有閃爍卡頓的情況。
2、這時我們應(yīng)該取消底部約束,利用最底部的view的最大y值來進行計算,賦值之后,將高度返回給tableView,利用代理方法為tableViewcell設(shè)置高度。
3、這樣就不會有約束警告問題了,屬于設(shè)置技巧。

Masonry 約束優(yōu)先級的問題

    - Content Hugging Priority: 該優(yōu)先級表示一個控件抗被拉伸的優(yōu)先級。優(yōu)先級越高,越不容易被拉伸,默認(rèn)是250。
     - Content Compression Resistance Priority: 該優(yōu)先級和上面那個優(yōu)先級相對應(yīng),表示一個控件抗壓縮的優(yōu)先級。優(yōu)先級越高,越不容易被壓縮,默認(rèn)是750


切換表情鍵盤

    /**
    切換表情鍵盤
    */
    func inputEmoticon()
    {
        print(#function)
        // 結(jié)論: 如果是系統(tǒng)自帶的鍵盤, 那么inputView = nil
        //      如果不是系統(tǒng)自帶的鍵盤, 那么inputView != nil
//        print(textView.inputView)

        // 1.關(guān)閉鍵盤
        textView.resignFirstResponder()

        // 2.設(shè)置inputView
        textView.inputView = (textView.inputView == nil) ? emoticonVC.view : nil

        // 3.從新召喚出鍵盤
        textView.becomeFirstResponder()
    }

==與isEqual的區(qū)別

==運算符只是簡單地判斷是否是同一個對象,即對象的地址是否相等 ,而isEqual方法可以判斷對象是否相同, 例如UIColor對象表示的color是否相同

cell點擊展開關(guān)閉動畫效果

1、
    模型修改cell的高度,調(diào)用方法
         [tableView beginUpdates];
         [tableView endUpdates];
2、
可以在點擊時加入
///顯示
        NSMutableArray *indexPaths = [NSMutableArray array];
        for (int i = 0; i < model.students.count; i++) {

            [indexPaths addObject:[NSIndexPath indexPathForItem:i inSection:section]];
        }
        [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

/// 刪除
        [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

pop動畫必設(shè)屬性設(shè)置

/*基礎(chǔ)動畫*/
POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPViewAlpha];
anim.fromValue = @(0.0);
anim.toValue = @(1.0);
[view pop_addAnimation:anim forKey:@"fade"];

/*彈性動畫*/
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 400, 400)];
[layer pop_addAnimation:anim forKey:@"size"];

            【彈性動畫相關(guān)屬性設(shè)置】
springBounciness:4.0    //[0-20] 彈力 越大則震動幅度越大
springSpeed     :12.0   //[0-20] 速度 越大則動畫結(jié)束越快
dynamicsTension :0      //拉力  接下來這三個都跟物理力學(xué)模擬相關(guān) 數(shù)值調(diào)整起來也很費時 沒事不建議使用哈
dynamicsFriction:0      //摩擦 同上
dynamicsMass    :0      //質(zhì)量 同上
【注意:POPSpringAnimation是沒有duration字段的 其動畫持續(xù)時間由以上幾個參數(shù)決定】


/*衰減動畫*/
POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
anim.velocity = @(1000.);
[layer pop_addAnimation:anim forKey:@"slide"];
                【可配置屬性】
deceleration:0.998  //衰減系數(shù)(越小則衰減得越快)

【注意:這里對POPDecayAnimation設(shè)置toValue是沒有意義的 會被忽略(因為目的狀態(tài)是動態(tài)計算得到的)<br>
注意:POPDecayAnimation也是沒有duration字段的 其動畫持續(xù)時間由velocity與deceleration決定】

/*自定義動畫*/
POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:@"prop" initializer:^(POPMutableAnimatableProperty *prop) {
    // read value
    prop.readBlock = ^(id obj, CGFloat values[]) {

    };
    // write value
    prop.writeBlock = ^(id obj, const CGFloat values[]) {

    };
    // dynamics threshold
    prop.threshold = 0.01;
}];
【其組成就是一個readBlock一個writeBlock和一個threashold

readBlock告訴POP當(dāng)前的屬性值
writeBlock中修改變化后的屬性值
threashold決定了動畫變化間隔的閾值 值越大writeBlock的調(diào)用次數(shù)越少】

xib創(chuàng)建tableView的Header約束報錯

    ///  xib創(chuàng)建tableView的header時需要在外面包裹一層view,否則會報約束錯誤的問題


UIView *baseHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,SCREEN_WIDTH , 250)];
self.headerView = [[[NSBundle mainBundle]loadNibNamed:@"HAIMineHeaderView" owner:nil options:nil] firstObject];
self.headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 250);
[baseHeaderView addSubview:self.headerView];
self.tableView.tableHeaderView = baseHeaderView;

tabbar設(shè)置item時,排版問題。

有title的會被排放在最后面,沒有title的會被放到前面,注意一下,應(yīng)該設(shè)置self.navigationItem.title

Autolayout對多行文本Label進行布局,高度不準(zhǔn)確的解決辦法

如果是計算多行UILabel,并且width不是固定的話(自動布局適配屏幕就是不固定,寫死的數(shù)值算固定),需要設(shè)置label的preferredMaxLayoutWidth屬性,否則計算的結(jié)果會有偏差!

textView自動計算高度

textView的scrollEnable屬性設(shè)置為NO,這樣的話,textView的高度約束>=120,這樣就會進行自動計算了.

collectionView流水布局flow,item等寬,間距相等

需要設(shè)置contentInset左右間距和margin相等

物理仿真器 UIDynamicAnimator

金錢金額不用float和double

  • 精確度問題,不使用float和double,*/ 都會改變精度

聊天或者評論界面的布局設(shè)計

    1.tableview 頂部約束為0 ,評論框 與tableView 四周約束為0 ,這時,當(dāng)鍵盤彈起的時候 tableView的視圖不會產(chǎn)生變化,會有tableView的cell被鍵盤擋住的現(xiàn)象
    2.tableView 頂部約束不設(shè)置,設(shè)置tableView的高度 = 屏幕高度- 鍵盤工具欄的高度.這時,當(dāng)鍵盤彈起的時候 tableView的視圖會從當(dāng)前cell 處向上彈起,不會又被鍵盤擋住的現(xiàn)象,可是當(dāng)tableview中的數(shù)據(jù)較少時,會有整體向上移動,導(dǎo)致數(shù)據(jù)也向上移動的情況.

IQKeyboardManager

1:IQKeyboardManager在需要解決鍵盤遮擋時會去遞歸找可滾動的父視圖進行偏移,如果沒有就對window的frame做文章
2:核心方法是adjustFrame,通過它解決鍵盤遮擋

tableView下拉,頭像放大

原理很簡單,就是在UITableview上邊添加一個圖片子視圖,在tableview拖動的時候動態(tài)的改變圖片的frame,就可以實現(xiàn)這個效果。

Swift和OC混編

1.創(chuàng)建橋接文件.h
    .h文件名:  項目名-Bridging-Header.h
    里面的內(nèi)容:  #import <UIKit/UIKit.h>
2.Build Settings ->  Use Legacy Swift Language Version:把后面的改成YES即可。

3.XCode -> Edit -> Convert -> To Current Swift Syntax...

4.直接導(dǎo)入swift文件  ->  #import 項目名-Swift.h

tableviewCell 左滑多個按鈕

1.首先UITableViewDataSource重寫這個方法,系統(tǒng)就會自動添加這種操作。
- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath
2.ios8.0 之后蘋果開放了這樣一個API:
-(nullable NSArray
*)tableView:(UITableView*)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
返回一個UITableViewRowAction數(shù)組,每一個"Action"代表一個側(cè)滑刪除的Button。這樣側(cè)滑每一行Cell可以有更多按鈕提供給用戶交互。
- http://www.cocoachina.com/ios/20151118/14243.html

ios 11 之后

    1.NavBar的titleView支持autoLayout
這要求titleView必須是能夠自撐開的或?qū)崿F(xiàn)了- intrinsicContentSize

- (CGSize)intrinsicContentSize {
    return UILayoutFittingExpandedSize;
}
    2.安全區(qū)域概念
if (@available(iOS 11.0, *)) {
    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}
- http://www.itdecent.cn/p/efbc8619d56b  iOS 11 安全區(qū)域適配總結(jié)

    3.大標(biāo)題
    iOS11導(dǎo)航欄多了一個LargeTitleView,專門顯示大字標(biāo)題用的,整個導(dǎo)航欄的高度達到了96p,比之前的導(dǎo)航欄多了32p,不過,大字標(biāo)題默認(rèn)是關(guān)閉的,所以一般情況下,導(dǎo)航欄的高度還是64p

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,614評論 4 61
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,257評論 7 249
  • 突然有種感覺,大姑娘真的是一天一個樣。繼上周我一個人帶她洗澡沒有哭。想著在家里玩水也是很開心的。還是要帶她去游泳啊...
    大果果ly閱讀 199評論 0 0
  • 寒冬 十二月天, 零下三十度嚴(yán)寒, 冬的氣息肆意彌漫。 兒時生滿凍瘡的手清晰可憶, 寒冬的課堂里總有爐火相伴, 深...
    汪霖閱讀 256評論 2 3
  • 日本茶道鼻祖 千利休 他喜歡低調(diào),質(zhì)樸,不張揚的事物。一生忠愛于簡潔,樸素,單純的美。他打破了...
    岳亞楠閱讀 1,261評論 0 0

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