gpt4 book ai didi

ios - 如何根据模拟器方向以编程方式应用约束

转载 作者:行者123 更新时间:2023-11-28 21:36:20 25 4
gpt4 key购买 nike

在我的 ViewController 中,我使用自动布局以编程方式添加了一个 UIView

我在这里应用基于模拟器方向的约束,但这里基于我的代码约束仅在模拟器处于纵向模式时适用,但在横向模式下更改时约束不应用我在这里做错了什么

我的代码:

#import "MainViewController.h"

@interface MainViewController (){

UIView * MainView;
}

@end

@implementation MainViewController

- (void)viewDidLoad {
[super viewDidLoad];

MainView = [[UIView alloc] init];
MainView.backgroundColor = [UIColor orangeColor];
MainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:MainView];

[self AppyingAutolayoutsAtPortraint];
}

-(void)AppyingAutolayoutsAtPortraint{

NSDictionary * HeaderDictionary = NSDictionaryOfVariableBindings(MainView);

//Appliying Autolayouts for MainView

[self.view removeConstraints:self.view.constraints];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"H:|-0-[MainView]-0-|"]
options:0
metrics:nil
views:HeaderDictionary]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:|-0-[MainView]-0-|"]
options:0
metrics:nil
views:HeaderDictionary]];

[self.view setNeedsLayout];

}

-(void)AppyingAutolayoutsLandAtScpae{

NSDictionary * HeaderDictionary = NSDictionaryOfVariableBindings(MainView);

//Appliying Autolayouts for MainView

[self.view removeConstraints:self.view.constraints];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"H:|-10-[MainView]-10-|"]
options:0
metrics:nil
views:HeaderDictionary]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:|-10-[MainView]-10-|"]
options:0
metrics:nil
views:HeaderDictionary]];

[self.view setNeedsLayout];
}

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context){

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

if (orientation == UIInterfaceOrientationPortrait) {

NSLog(@"UIInterfaceOrientationPortrait");
[self AppyingAutolayoutsAtPortraint];
}
else if (orientation == UIInterfaceOrientationLandscapeLeft) {


NSLog(@"UIInterfaceOrientationLandscapeLeft");
[self AppyingAutolayoutsLandAtScpae];

}else if (orientation == UIInterfaceOrientationLandscapeRight){

NSLog(@"UIInterfaceOrientationLandscapeRight");
[self AppyingAutolayoutsLandAtScpae];
}

} completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{

}];

[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}

@end

最佳答案

您可以根据您的要求使用尺码等级。使用大小类,在设计您的应用程序时,您现在可以创建一个适用于所有当前 iOS 设备的单一布局,而无需笨拙的特定于平台的代码。您需要做的就是打开 Storyboard,转到文件检查器并确保选中 Use Size Classes 复选框。

Here is a really nice tutorial on Size Classes.

关于ios - 如何根据模拟器方向以编程方式应用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com