明天就是元旦了 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特性
當uiview
的autoresizessubviews
是yes
時,(預設是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繼承...