假设我有一个视图控制器A,其中有5个视图,如标签,按钮。我已将约束设置为4个视图。但是,对于第五种观点,情况有所不同。在肖像中,我需要不同的x,y位置和高度和宽度。在风景中,我需要不同的x,y位置和高度和宽度。因此,不可能为此定义约束,因为它是一个自定义。我只需要以编程方式设置框架,无论我希望我的视图放置在不同的方向。
有没有解决方案?
答案 0 :(得分:1)
检测到orientation
后,您可以使用已关联IBOutlets
的{{1}}来设置control
,例如:
frame
我希望这会对你有所帮助。
修改强>
首先在故事板或您的IB中创建约束,然后为ex:
创建该约束的出口[myView setFrame:CGRectMake(x,y,width,height)];
然后以编程方式更改此约束:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *viewHeightConstraint;
答案 1 :(得分:1)
选项1 将其添加到您的viewcontroller,并使用它来监控您的设备方向,而不是更改您的第5个视图框
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
}
选项2
在viewDidLoad中添加
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(change:) name:UIDeviceOrientationDidChangeNotification object:nil];
然后在此功能中,您可以监控方向更改
-(void)change:(UIDeviceOrientation)orientation{
}
在dealloc中,将其删除
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
}