藍懿 ios技術交流和心得分享12 31

2021-07-09 06:27:34 字數 3360 閱讀 3423

明天就是元旦了  2023年啦   加油吧  明天你好!!

鍵盤監聽:

#import "viewcontroller.h"

@inte***ce viewcontroller ()

@property (nonatomic, strong)ui******* ********;

@end

@implementation viewcontroller

- (void)viewdidload

-(void)keyboardwillchange:(nsnotification *)notielse

}];}

-(void)keyboardwillshow:(nsnotification *)noti];

}-(void)keyboardwillhide:(nsnotification *)noti];

}1. autoresizing特性

uiviewautoresizessubviewsyes時,(預設是yes), 那麼在其中的子view會根據它自身的autoresizingmask屬性來自動適應其與superview之間的位置和大小。

autoresizingmask是乙個列舉型別, 預設是uiviewautoresizingnone, 也就是不會autoresize:

123456789
typedef ns_options(nsuinteger, uiviewautoresizing) ;
這個列舉型別,使用了1 << n這樣的寫法來定義,代表了它可以複選。如果你不明白為什麼,可以複習下「位運算」。 那麼這些值分別代表什麼意思呢?

其實如何理解這幾個值很簡單,那就是從xib裡面看。 我們在乙個xib檔案中,取消勾選autolayout,(預設使用autolayout時,autoresizing看不到)。那麼我們可以在布局那一欄看到如何設定autoresizing.

上圖說明了在xib中設定的這些線條和實際屬性對應的關係,這其中需要注意的是,其中4個margin虛線才代表設定了該值,而width和height是實線代表設定了該值,不能想當然的理解。

這些項分別代表:

autoresizingmask是子檢視的左、右、上、下邊距以及寬度和高度相對于父檢視按比例變化,例如:

uiviewautoresizingnone 不自動調整。

uiviewautoresizingflexibleleftmargin 自動按比例調整與superview左邊的距離,且與superview右邊的距離不變。

uiviewautoresizingflexiblerightmargin 自動按比例調整與superview的右邊距離,且與superview左邊的距離不變。

uiviewautoresizingflexibletopmargin  自動按比例調整與superview的頂部距離,且與superview底部的距離不變。

uiviewautoresizingflexiblebottommargin 自動按比例調整與superview的底部距離,且與superview頂部的距離不變。

uiviewautoresizingflexiblewidth 自動按比例調整寬度。

uiviewautoresizingflexibleheight 自動按比例調整高度。

uilabel*    label = [[uilabel alloc] initwithframe:cgrectmake(50, 100, 200, 40)];

[label setautoresizingmask: uiviewautoresizingnone];  控制項相對于父檢視座標值不變   

cgrectmake(50, 100, 200, 40)

uiviewautoresizingflexiblewidth:控制項的寬度隨著父檢視的寬度按比例改變    例如

label寬度為 100     螢幕的寬度為320          當螢幕寬度為480時      label寬度  變為  100*480/320

以上這些都較易理解, 但是autoresizing還有一些組合場景。那就是組合使用的場景。

autoresizingmask

說明xib預覽效果

none

view的frame不會隨superview的改變而改變(右圖的xib中預覽效果與實際效果有差,實際效果是view的上邊距不變)

topmargin | bottommargin

view與其superview的上邊距和下邊距的比例維持不變

leftmargin | rightmargin

view與其superview的左邊距和右邊距的比例維持不變(右圖的xib中預覽效果與實際效果有差,實際效果是view的上邊距不變)

leftmargin | rightmargin | topmargin | bottommargin

view與其superview的上下左右邊距的比例維持不變

leftmargin | width

view與其superview的右邊距的比例維持不變, 左邊距和width按比例調整(右圖的xib中預覽效果與實際效果有差,實際效果是view的上邊距不變)

leftmargin | width | rightmargin

左邊距、右邊距、寬按比例調整,(右圖的xib中預覽效果與實際效果有差,實際效果是view的上邊距不變)垂直方向是同樣效果,故不列舉

width | height

自動調整view的寬和高,保證上下左右邊距不變。如把tableview設定為此屬性,那麼無論viewcontroller的view是多大,都能自動鋪滿

上面並未列舉所有組合場景,但是已經足夠我們理解autoresizing了。

2. 小結

autoreszing的最常見的實用場景就是iphone5的相容了。比如我們想要設定tableview的frame,那我們只需要在初始化設定frame之後將tableview的autoresizingmask設定為uiviewautoresizingflexiblewidth|uiviewautoresizingflexibleheight就行了。

另一種比如我們想要乙個view一直停留在其superview的最下方,那麼我們在初始化設定frame之後只需要將autoresizingmask設定為uiviewautoresizingflexibletopmargin就可以了。

autorezingmask簡單的乙個屬性,理解它之後可以讓很多事情變得簡單

寫部落格第八十二天;​​

藍懿ios 技術交流和心得分享 12 9

一 用afnetwork檢測網路 afnetworkreachabilitymanager manager afnetworkreachabilitymanagersharedmanager manager startmonitoring manager setreachabilitystatusc...

藍懿ios技術交流和心得分享16 1 14

c語言記憶體分析 一 進製 概念 進製是一種計數方式,是數值的表現形式 4種主要的進製 十進位制 0 9 二進位制 0和1 八進位制 0 7 十六進製制 0 9 a b c d e f c語言在預設的情況下為十進位制。int num 1010 十進位制 int num 0b1100 二進位制,以0b...

藍懿ios 技術內容和心得交流分享 11 8

今天上午講了tableviewcontroller的編輯,tableviewcontroller的中cell建立方式有三種 準備工作 通過把uitableviewcontroller的tableviewcontroller.h和tableviewcontroller.m檔案刪除,建立新的fiel繼承...