[英]Autolayout constraints to change composition on orientation
在情節提要中設置約束,以獲取所需的縱向布局。 然后添加兩個其他約束並將其優先級從1000更改為999:
為以下約束創建IBOutlet
:
例如:
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *bottomSpaceToViewConstraint;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *leadingSpaceToSuperviewConstraint;
重要的是,從weak
引用切換為strong
引用以將約束保留在內存中,即使它們不處於活動狀態也是如此。
最終實現以下代碼:
- (void)viewDidLoad {
[super viewDidLoad];
// check if viewcontroller is opened in landscape
CGSize size = self.view.bounds.size;
if (size.width > size.height) {
// is landscape
self.bottomSpaceToViewConstraint.active = NO;
self.leadingSpaceToSuperviewConstraint.active = NO;
}
}
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
if (size.height > size.width) {
// will transition to portrait
self.bottomSpaceToViewConstraint.active = YES;
self.leadingSpaceToSuperviewConstraint.active = YES;
} else {
// will transition to landscape
self.bottomSpaceToViewConstraint.active = NO;
self.leadingSpaceToSuperviewConstraint.active = NO;
}
}
隨時詢問是否不清楚!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.