首先聲明本文檔純屬原創(chuàng)澄步,如果你喜歡的話請(qǐng)轉(zhuǎn)載
自我感悟
首先介紹下第一印象鼓鲁,感覺MyLayout 很強(qiáng)大不用添加很多的約束就能實(shí)現(xiàn)完美實(shí)現(xiàn)布局。比如UIScrollView 自動(dòng)會(huì)設(shè)置ContentSize,如果內(nèi)容子視圖的超出UIScrollView 的時(shí)候就會(huì)自動(dòng)實(shí)現(xiàn)滑動(dòng)肆饶,還有就是如果一個(gè)等間距,等寬或者等高子視圖的布局很簡(jiǎn)單岖常,少量代碼就能完美實(shí)現(xiàn)驯镊。好了,廢話少說,直接上代碼板惑。
初級(jí)介紹
幾個(gè)關(guān)鍵字
myMargin(就是子視圖距父視圖的間距橄镜,相當(dāng)于一次設(shè)置了myLeftMargin,myRightMargin冯乘, 洽胶,myRightMargin ,myBottomMargin, 當(dāng)然了如果這幾個(gè)間距不相等就需要分開賦值了),
myWidth(本視圖的寬度)
myHeight(本視圖的高度)
1.? 根據(jù)x裆馒,y 姊氓,width ,height 喷好,將視圖顯示在固定位置(例如x = 20 翔横, y = 200 , width = 200, height = 40)
你可能直接理解為(如下)
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"第一顯示子視圖請(qǐng)確定位置" ;
label.myLeftMargin = 20 ;?? // 設(shè)置左邊距
label.myTopMargin = 200; ; //設(shè)置上邊距
label.myHeight = 40 ; //設(shè)置高度
label.myWidth = 200; // 設(shè)置寬度
label.font = [UIFont systemFontOfSize:20];
label.textAlignment = NSTextAlignmentCenter ;
[self.view addSubview:label];
然后執(zhí)行梗搅,你發(fā)現(xiàn)界面上什么都沒有禾唁,你肯定要問為什么了,首先MyLinearLayout是一種布局視圖些膨,只要是界面上顯示的一個(gè)view蟀俊,都要加上約束也就是添加MylinearLayout約束,看上面代碼你會(huì)發(fā)現(xiàn)self.view(理論上也就是一個(gè)UIView)沒有添加約束订雾,好了現(xiàn)在知道原因就可以更改了肢预,
對(duì)self.view 添加約束
MyLinearLayout *layout = [MyLinearLayout linearLayoutWithOrientation:MyLayoutViewOrientation_Vert];
layout.myMargin = 0 ;
layout.backgroundColor = [UIColor whiteColor];
layout.wrapContentHeight = YES ; // 設(shè)置self.view 的高度是根據(jù)子視圖高度 來顯示也就是變長(zhǎng)的
layout.wrapContentWidth = NO ; // 設(shè)置self.view 的寬度是定長(zhǎng),現(xiàn)在是self.view 的寬度和window 的寬度一致
[self.view addSubview:layout];
//? 或者你也可以這樣做
/*
MyLinearLayout *layout = [MyLinearLayout linearLayoutWithOrientation:MyLayoutViewOrientation_Vert];
layout.myMargin = 0 ;
layout.backgroundColor = [UIColor whiteColor];
layout.wrapContentHeight = YES ;
layout.wrapContentWidth = NO ;
self.view = layout ;
*/
上面label代碼就可以修改為 (也就是修改最后一句代碼為 )
[layout addSubview:label];
這樣label就顯示出來洼哎!顯示出來你可能又要問烫映,一般label 就是根據(jù)text 內(nèi)容寬度來顯示的,好的下面就介紹
根據(jù)UILabel 的text 的內(nèi)容來顯示(text有多寬就顯示多寬噩峦,高度根據(jù)label的font來顯示, 如下圖所示)
label 中的設(shè)置myWidth 和myHeight 的代碼去掉锭沟,添加 sizeToFit (設(shè)置label 寬度)和 flexedHeight = YES(設(shè)置label 高度),完整代碼就是
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"第一顯示子視圖請(qǐng)確定位置" ;
label.myLeftMargin = 20 ;
label.myTopMargin = 200; ;
label.flexedHeight = YES ; // 確定label 的高度
label.font = [UIFont systemFontOfSize:10];
label.textAlignment = NSTextAlignmentCenter ;
[label sizeToFit];? // 根據(jù)內(nèi)容長(zhǎng)度來確定label 的寬度
[layout addSubview:label];
當(dāng)然還是有人說识补,我想給一段text族淮,固定label 的寬度,來變長(zhǎng)顯示凭涂,好的代碼如下
根據(jù)UILabel 中text 的內(nèi)容祝辣,多行顯示label 代碼如下
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置第一顯示子視圖請(qǐng)確定位置" ;
label.myLeftMargin = 20 ;
label.myRightMargin = 20 ;
label.myTopMargin = 200; ;
label.flexedHeight = YES ;
label.font = [UIFont systemFontOfSize:10];
label.textAlignment = NSTextAlignmentCenter ;
label.numberOfLines = 0;
[layout addSubview:label];
// 顯示如下
G
M
T
檢測(cè)語言阿爾巴尼亞語阿拉伯語阿塞拜疆語愛爾蘭語愛沙尼亞語巴斯克語白俄羅斯語保加利亞語冰島語波蘭語波斯尼亞語波斯語布爾語(南非荷蘭語)丹麥語德語俄語法語菲律賓語芬蘭語高棉語格魯吉亞語古吉拉特語哈薩克語海地克里奧爾語韓語豪薩語荷蘭語加利西亞語加泰羅尼亞語捷克語卡納達(dá)語克羅地亞語拉丁語拉脫維亞語老撾語立陶宛語羅馬尼亞語馬爾加什語馬耳他語馬拉地語馬拉雅拉姆語馬來語馬其頓語毛利語蒙古語孟加拉語緬甸語苗語南非祖魯語尼泊爾語挪威語旁遮普語葡萄牙語齊切瓦語日語瑞典語塞爾維亞語塞索托語僧伽羅語世界語斯洛伐克語斯洛文尼亞語斯瓦希里語宿務(wù)語索馬里語塔吉克語泰盧固語泰米爾語泰語土耳其語威爾士語烏爾都語烏克蘭語烏茲別克語希伯來語希臘語西班牙語匈牙利語亞美尼亞語伊博語意大利語意第緒語印地語印尼巽他語印尼語印尼爪哇語英語約魯巴語越南語中文簡(jiǎn)體中文繁體
阿爾巴尼亞語阿拉伯語阿塞拜疆語愛爾蘭語愛沙尼亞語巴斯克語白俄羅斯語保加利亞語冰島語波蘭語波斯尼亞語波斯語布爾語(南非荷蘭語)丹麥語德語俄語法語菲律賓語芬蘭語高棉語格魯吉亞語古吉拉特語哈薩克語海地克里奧爾語韓語豪薩語荷蘭語加利西亞語加泰羅尼亞語捷克語卡納達(dá)語克羅地亞語拉丁語拉脫維亞語老撾語立陶宛語羅馬尼亞語馬爾加什語馬耳他語馬拉地語馬拉雅拉姆語馬來語馬其頓語毛利語蒙古語孟加拉語緬甸語苗語南非祖魯語尼泊爾語挪威語旁遮普語葡萄牙語齊切瓦語日語瑞典語塞爾維亞語塞索托語僧伽羅語世界語斯洛伐克語斯洛文尼亞語斯瓦希里語宿務(wù)語索馬里語塔吉克語泰盧固語泰米爾語泰語土耳其語威爾士語烏爾都語烏克蘭語烏茲別克語希伯來語希臘語西班牙語匈牙利語亞美尼亞語伊博語意大利語意第緒語印地語印尼巽他語印尼語印尼爪哇語英語約魯巴語越南語中文簡(jiǎn)體中文繁體
語言功能限100個(gè)字符