亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS中級篇——自動布局Autolayout?and?VFL

2019-11-14 18:47:54
字體:
來源:轉載
供稿:網友
?
?

*/ 以下不常用 ?

// 務必記住
// 1.當給某個控件設置約束時候,必須關閉這個控件上autoresing
// 2.當給一個控件添加約束時候,必須保證這個控件在控制器View的層次結構中

- (void)viewDidLoad {
??? [
super viewDidLoad];
??
??? UIView *redView = [[UIView alloc] init];
??? redView.backgroundColor = [UIColor redColor];
??? [
self.view addSubview:redView];
???
??? UIView *blueView = [[UIView alloc] init];
??? blueView.backgroundColor = [UIColor blueColor];
??? [
self.view addSubview:blueView];
???
//? Constraint 約束
/*
?
第一個參數 Item
?1.
需要約束控件
?
第二個參數 約束的屬性
?NSLayoutAttributeLeft = 1,
左邊
?NSLayoutAttributeRight,?
右邊
?NSLayoutAttributeTop,???
頂部
?NSLayoutAttributeBottom,
下邊
?NSLayoutAttributeLeading,
左邊
?NSLayoutAttributeTrailing,
右邊
?NSLayoutAttributeWidth, ?

?NSLayoutAttributeHeight,?

?NSLayoutAttributeCenterX,
水平中線
?NSLayoutAttributeCenterY,
垂直中線
?
第三個參數就是 關系
?typedef NS_ENUM(NSInteger, NSLayoutRelation) {
?NSLayoutRelationLessThanOrEqual = -1,? "<="
?NSLayoutRelationEqual = 0,????????????? "=="
?NSLayoutRelationGreaterThanOrEqual = 1, ">="
?};
第四個參數 參照物(參照控件)
?
第五個參數 參照控件的屬性
?
multiplier

?
constant ? +
?
公式
item1.attribute <relation> item2.attribute * multiplier + constant
?
?*/

// 務必記住
// 1.當給某個控件設置約束時候,必須關閉這個控件上autoresing
?? blueView.translatesAutoresizingMaskIntoConstraints =
NO;
??? redView.translatesAutoresizingMaskIntoConstraints =
NO;
// 2.當給一個控件添加約束時候,必須保證這個控件在控制器View的層次結構中
???
//? 添加藍色的View頂部
??? NSLayoutConstraint *blueTop = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop? relatedBy:NSLayoutRelationEqual toItem:
self.view attribute:NSLayoutAttributeTop multiplier:1 constant:20];
???
??? [
self.view addConstraint:blueTop];
???
???
//? 添加藍色的View左邊
??? NSLayoutConstraint *blueLeft = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft? relatedBy:NSLayoutRelationEqual toItem:
self.view attribute:NSLayoutAttributeLeft multiplier:1 constant:20];
???
??? [
self.view addConstraint:blueLeft];
???
//? 添加藍色的View右邊
??? NSLayoutConstraint *blueRight = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight? relatedBy:NSLayoutRelationEqual toItem:
self.view attribute:NSLayoutAttributeRight multiplier:1 constant:-20];
??? [
self.view addConstraint:blueRight];
???
//? 添加藍色的View的高度
??? NSLayoutConstraint *blueHeigt = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight? relatedBy:NSLayoutRelationEqual toItem:
nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
??? [
self.view addConstraint:blueHeigt];
???
//? 添加紅色view上面約束
//? 紅色的頂部
??? NSLayoutConstraint *redTop = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop? relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:
1 constant:20];
??? [
self.view addConstraint:redTop];
//? 紅色view與藍色view右邊對齊
??? NSLayoutConstraint *redRight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight? relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:
1 constant:0];
??? [
self.view addConstraint:redRight];
??
???
//? 紅色view與藍色view的高度相同
??? NSLayoutConstraint *redHeight = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight? relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:
1 constant:0];
??? [
self.view addConstraint:redHeight];
???
???
???
//? 紅色view與藍色view的高度相同
??? NSLayoutConstraint *redWidth = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth? relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:
0.5 constant:0];
??? [
self.view addConstraint:redWidth];
???
}

動畫
? ? self.vSpaceConstraint.constant += 100;
??? self.hSpaceContraint.constant += 100;
???
self.widthcontraint.constant += 100;
???
self.heightContraint.constant += 100;
???
???
??? [UIView animateWithDuration:
1 animations:^{
//????? 這個方法是讓重新布局界面
//????? 計算約束,然后調節控件的位置
??????? [
self.view layoutIfNeeded];
??? }];


——Vfl 語法
偶爾用 ?
// ?一定要關閉autoresizing?
- (void)viewDidLoad {
??? [
super viewDidLoad];
???
//? 1.創建子控件,添加加到控制器view
??? UIView *blueView = [[UIView alloc] init];
??? blueView.backgroundColor = [UIColor blueColor];
??? [
self.view addSubview:blueView];
???
??? UIView *redView = [[UIView alloc] init];
??? redView.backgroundColor = [UIColor redColor];
??? [
self.view addSubview:redView];
???
//? 2.關閉autoresizing
???
??? blueView.translatesAutoresizingMaskIntoConstraints =
NO;
??? redView.translatesAutoresizingMaskIntoConstraints =
NO;
???
//? 3.通過VFL添加約束
// ? options 對齊方式
//? 水平方向
??? NSArray *hConstraints = [NSLayoutConstraint constraintsWithVisualFormat:
@"H:|-20-[blueView]-20-|" options:NSLayoutFormatAlignAllTop metrics:nil views:@{@"blueView":blueView}];
??? [
self.view addConstraints:hConstraints];
???
//? 豎直方向
????? NSArray *vConstraints = [NSLayoutConstraint constraintsWithVisualFormat:
@"V:|-20-[blueView(100)]-20-[redView(==blueView)]" options:NSLayoutFormatAlignAllRight metrics:nil views:@{@"blueView":blueView,@"redView":redView}];
???
??? [
self.view addConstraints:vConstraints];
???
//? VFL 不能參與運算
//??? NSArray *h1Constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[redView(==blueView * 0.5)]" options:NSLayoutFormatAlignAllTop metrics:nil views:@{@"blueView":blueView,@"redView":redView}];
//???
//??? [self.view addConstraints:h1Constraints];
??? NSLayoutConstraint *redW = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeWidth multiplier:
0.5 constant:0];
??? [
self.view addConstraint:redW];
???
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最大成人网色| 久久精品91久久香蕉加勒比| 成人性教育视频在线观看| 日韩美女福利视频| 国产一区二区三区在线观看网站| 精品久久久久久久大神国产| 久久人人爽人人爽人人片av高清| 第一福利永久视频精品| 2024亚洲男人天堂| 国外成人免费在线播放| 日韩欧美国产激情| 日韩在线视频网| 色在人av网站天堂精品| 欧美福利在线观看| 日韩欧亚中文在线| 久久精品国产精品亚洲| 国产精品久久久久久久久免费看| 久久天堂av综合合色| 亚洲国产精品电影在线观看| 日韩av网址在线观看| 国内精品伊人久久| 亚洲欧美另类中文字幕| 国产精品扒开腿爽爽爽视频| 国产免费观看久久黄| 欧美激情视频一区二区三区不卡| 国产99在线|中文| 俺去啦;欧美日韩| 亚洲一区二区三区久久| 欧美一区视频在线| 午夜美女久久久久爽久久| 51视频国产精品一区二区| 日韩成人av在线播放| 精品女同一区二区三区在线播放| 国产精品视频一区二区高潮| 日本一区二区在线免费播放| 欧美精品精品精品精品免费| 日韩av影片在线观看| 性欧美xxxx交| 欧美成年人在线观看| 日韩激情视频在线| 国产美女精品视频免费观看| 中文在线不卡视频| 国产精品亚洲视频在线观看| 国产精品自产拍高潮在线观看| 亚洲欧美国内爽妇网| 久久国产加勒比精品无码| 在线观看久久av| 欧美激情亚洲综合一区| 麻豆国产va免费精品高清在线| 欧美黄网免费在线观看| 久久久国产视频| 成人黄色片网站| 日韩av电影在线免费播放| 久久九九亚洲综合| 国产在线视频不卡| 欧美最顶级丰满的aⅴ艳星| 国产色综合天天综合网| 神马国产精品影院av| 欧美天天综合色影久久精品| 欧美中文字幕第一页| 韩剧1988免费观看全集| 欧美久久精品午夜青青大伊人| 国产亚洲精品久久久久久牛牛| 国产精品女主播| 欧美色videos| 91精品免费看| 国产aaa精品| 日韩视频亚洲视频| 国产不卡一区二区在线播放| 日韩成人av在线播放| www.午夜精品| www.日韩.com| 欧美日韩在线另类| 成人av.网址在线网站| 最近中文字幕mv在线一区二区三区四区| 久久伊人精品视频| 色七七影院综合| 欧美日韩成人免费| 欧美裸体xxxx| 欧美激情xxxxx| 57pao国产成人免费| 亚洲精品自拍第一页| 国产精品久久久久秋霞鲁丝| 日韩免费看的电影电视剧大全| 亚洲欧美一区二区三区情侣bbw| 国产日韩欧美自拍| 成人羞羞国产免费| 福利一区福利二区微拍刺激| 国产一区二区三区在线观看网站| 日韩日本欧美亚洲| 国产欧美日韩免费| 91中文精品字幕在线视频| 欧美激情按摩在线| 亚洲欧美自拍一区| 亚洲综合社区网| 大桥未久av一区二区三区| 欧美电影在线观看完整版| 欧美极度另类性三渗透| 亚洲欧美国产高清va在线播| 精品福利免费观看| xx视频.9999.com| 日本乱人伦a精品| 精品福利免费观看| 国产欧美日韩专区发布| 久久久久久久久久久免费精品| 午夜免费在线观看精品视频| 久久精品国产久精国产一老狼| 亚洲国产精品久久久久秋霞不卡| 久久久亚洲精选| 国产成人高清激情视频在线观看| 日韩精品中文字幕视频在线| 欧美激情2020午夜免费观看| 国产精品电影久久久久电影网| 欧美成人精品h版在线观看| 亚洲美女性生活视频| 国产97在线播放| 国外成人免费在线播放| 亚洲欧美在线一区| 亚洲成人免费在线视频| 色偷偷综合社区| 中文字幕国产亚洲2019| 国产精品一区二区三区免费视频| 国产一区二区三区中文| 欧美黑人xxxx| 8x拔播拔播x8国产精品| 久久九九有精品国产23| 国产成人jvid在线播放| 欧美在线欧美在线| 亚洲欧美国产精品专区久久| 亚洲成av人影院在线观看| 国产男女猛烈无遮挡91| 欧美综合激情网| 亚洲午夜国产成人av电影男同| 亚洲天堂2020| 日本国产欧美一区二区三区| 日韩av男人的天堂| 日本道色综合久久影院| 俺去亚洲欧洲欧美日韩| 国产精品中文字幕在线| 精品色蜜蜜精品视频在线观看| 国产在线98福利播放视频| 精品国产一区二区三区久久| 综合136福利视频在线| 日韩欧美在线视频日韩欧美在线视频| 欧美日韩国产在线| 亚洲精品视频播放| 久久91精品国产91久久久| 国产精品久久97| 日韩在线观看网站| 国产亚洲欧美日韩精品| 国产精品99免视看9| 91av在线看| 国产美女久久久| 欧美黄色三级网站| xxx成人少妇69| 91在线播放国产| 国产精品网红福利| 久久手机免费视频| 亚洲jizzjizz日本少妇| 欧美国产一区二区三区| 国产欧美日韩丝袜精品一区| 成人a视频在线观看| 在线看日韩av| 国产亚洲人成a一在线v站|