日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NSLayoutConstraint

發布時間:2025/4/9 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NSLayoutConstraint 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

屏幕兼容的問題

為了讓我們的應用在不容尺寸的屏幕下都能 “正常”的表示,我們盡量不要把數據寫死。

大多數可視元素都是一個矩形區域,當然這個矩形區域有坐標的,我們有了這個區域坐標就能確定可視元素的現實位置了。

但是iphone5 和以前的屏幕不一樣了,在以前的設備中,我們可以添加一個 xx.@2x.png 來適應retina屏幕,但是iphoen5咋辦呢?

ios 引入了 Auto Layout 的東東,這個要和UIViewAutoresizing 區分下。

看下面代碼

- (void)viewDidLoad
{
??? [super viewDidLoad];
?????? ?
??? UIView *aView = [[UIView alloc] init];
??? aView.backgroundColor = [UIColor redColor];

//為了不和autosizing沖突,我們設置No

??? [aView setTranslatesAutoresizingMaskIntoConstraints:NO];
??? [self.view addSubview:aView];
?? ?
??? UIView *bView = [[UIView alloc] init];
??? bView.backgroundColor = [UIColor blueColor];
??? [bView setTranslatesAutoresizingMaskIntoConstraints:NO];
??? [self.view addSubview:bView];
?? ?
??? NSDictionary *views = NSDictionaryOfVariableBindings(aView, bView);

//NSDictionaryOfVariableBindings? 宏? 其實 NSDictionaryOfVariableBindings(v1, v2, v3) 等效于 [NSDictionary dictionaryWithObjectsAndKeys:v1, @"v1", v2, @"v2", v3, @"v3", nil];????
??? [self.view addConstraints:
??? [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(>=50)-[aView(100)]"
???????????????????????????????????????????? options:0
???????????????????????????????????????????? metrics:nil
?????????????????????????????????????????????? views:views]];
?? ?
??? [self.view addConstraints:
???? [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=100)-[aView(50)]"
???????????????????????????????????????????? options:0
???????????????????????????????????????????? metrics:nil
?????????????????????????????????????????????? views:views]];
? ?
??? [self.view addConstraints:
???? [NSLayoutConstraint constraintsWithVisualFormat:@"H:[bView(==aView)]"
???????????????????????????????????????????? options:0
???????????????????????????????????????????? metrics:nil
?????????????????????????????????????????????? views:views]];
??? [self.view addConstraints:
???? [NSLayoutConstraint constraintsWithVisualFormat:@"V:[bView(==aView)]"
???????????????????????????????????????????? options:0
???????????????????????????????????????????? metrics:nil
?????????????????????????????????????????????? views:views]];
?? ?
??? [self.view addConstraint:
???? [NSLayoutConstraint constraintWithItem:bView
????????????????????????????????? attribute:NSLayoutAttributeLeft
????????????????????????????????? relatedBy:NSLayoutRelationEqual
???????????????????????????????????? toItem:aView
????????????????????????????????? attribute:NSLayoutAttributeRight
???????????????????????????????? multiplier:1
?????????????????????????????????? constant:10]];
??? //添加一個限制? 等效于 bView.frame.origin.x? = (aView.frame.origin.x +aView.frame.size.width)? * 1? + 10,好像是這樣的!個人覺得!

? 它是一種依賴關系,bView依賴aView,這樣就算aView變了,bView也會跟著變換。
??? [self.view addConstraint:
???? [NSLayoutConstraint constraintWithItem:bView
????????????????????????????????? attribute:NSLayoutAttributeTop
????????????????????????????????? relatedBy:NSLayoutRelationEqual
???????????????????????????????????? toItem:aView
????????????????????????????????? attribute:NSLayoutAttributeTop
???????????????????????????????? multiplier:1
?????????????????????????????????? constant:0]];
?? ?
??? [aView release];
??? [bView release];
}

?

?

?

constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:

?

Create a constraint of the form "view1.attr1 <relation> view2.attr2 * multiplier + constant".

屬性

typedef NS_ENUM(NSInteger, NSLayoutAttribute) {
??? NSLayoutAttributeLeft = 1,
??? NSLayoutAttributeRight,
??? NSLayoutAttributeTop,
??? NSLayoutAttributeBottom,
??? NSLayoutAttributeLeading,
??? NSLayoutAttributeTrailing,
??? NSLayoutAttributeWidth,
??? NSLayoutAttributeHeight,
??? NSLayoutAttributeCenterX,
??? NSLayoutAttributeCenterY,
??? NSLayoutAttributeBaseline,
?? ?
??? NSLayoutAttributeNotAnAttribute = 0
};

關系

typedef NS_ENUM(NSInteger, NSLayoutRelation) {
??? NSLayoutRelationLessThanOrEqual = -1,
??? NSLayoutRelationEqual = 0,
??? NSLayoutRelationGreaterThanOrEqual = 1,
};

最后的結果就是 “view1.attr1? < ?? ?? >= ?? 或者 == ? 或者 ?? <= ? ? ? >? view2.attr2 * multiplier + constant”

轉載于:https://www.cnblogs.com/DamonTang/p/3570743.html

總結

以上是生活随笔為你收集整理的NSLayoutConstraint的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产第一页av | 婷婷色五 | 黄色片毛片| 久久久久久久人妻无码中文字幕爆 | 99国产精品免费视频 | 午夜一区二区三区 | 美女扒开下面让男人捅 | 四虎成人影视 | 被黑人猛躁10次高潮视频 | 91香蕉国产在线观看 | 欧美激情va永久在线播放 | 在线视频免费观看一区 | 午夜福利视频 | 极品少妇视频 | 成年在线观看视频 | 亚洲 小说 欧美 激情 另类 | 欧美色悠悠 | 久久久久久夜 | 亚洲视频在线免费观看 | av大帝在线观看 | 久久精品23| 伊人五月婷婷 | 国产成人免费在线 | 亚洲无码精品一区二区三区 | 六月婷婷久久 | 欧美1区2区3区4区 | 亚洲av区无码字幕中文色 | 操女人逼逼视频 | 亚洲国产毛片aaaaa无费看 | 午夜爱爱免费视频 | 精品国产乱码久久久久久蜜柚 | 精品欧美一区二区久久久 | 久久久在线视频 | 一本色道久久综合 | 中文字幕11页中文字幕11页 | 亚洲av电影一区二区 | 日韩无码精品一区二区三区 | 免费不卡毛片 | 中文字幕第二区 | 在线免费看mv的网站入口 | 18久久久| 国产福利91 | 嫩草视频在线观看 | 日本成人三级 | 国产精品免费无遮挡无码永久视频 | 国产精品国产三级国产aⅴ下载 | 国产91精品久久久久 | 手机在线精品视频 | av猫咪 | 在线播放毛片 | 欧美aaa级| 97在线播放 | 天堂视频免费看 | 日韩中文一区二区 | 日本一区二区三区四区五区 | 婷婷亚洲天堂 | 男人天堂av在线播放 | 国内自拍网站 | 亚洲综合福利 | 成人h视频在线观看 | 国产精品一区二区网站 | 婷婷丁香九月 | 亚洲国产精品欧美久久 | 色人阁av | 国产乡下妇女三片 | 国产乱子一区二区 | 国产成人久久精品77777综合 | 午夜精品免费观看 | 国产亚洲第一页 | 鲁一鲁在线视频 | 美女毛毛片 | 亚洲精品97久久中文字幕无码 | 在线a毛片 | 国产成人亚洲精品 | 性喷潮久久久久久久久 | 爱的天堂| 网友自拍av| 三年中国片在线高清观看 | 免费无遮挡无码永久视频 | 韩国无码一区二区三区精品 | 五月天黄色网 | 成人h动漫精品一区二区 | 色香蕉在线 | 欧美成年人网站 | 亚洲av人人夜夜澡人人 | 黄网在线观看视频 | 国产女人18水真多18精品一级做 | 午夜三级福利 | 久久综合第一页 | 女人扒开屁股让男人桶 | 男男h黄动漫啪啪无遮挡软件 | 精品人妻一区二区三区久久夜夜嗨 | 婷婷亚洲综合 | 欧美aaa级片 | 久久久久九九九九 | 中文字幕免费在线视频 | 射死你天天日 | 一本久道综合色婷婷五月 | 欧美大片在线 |