Xcode 根据屏幕方向更改约束

标签 xcode ipad autolayout

我设计了一个使用自动布局的应用程序,所有功能都完美运行,问题是,当我切换到横向时,我希望一个按钮的位置移动到屏幕的另一侧。

我假设最好的方法是在旋转屏幕时更改约束,这在代码中是否可能,甚至是最好的方法?显然,如果应用程序以横向模式启动,我显然希望此按钮也处于横向模式。

谢谢

最佳答案

绝对是的。根据需要在 View Controller 的 updateViewConstraints 实现中删除和添加约束。

您会发现提前准备两组备用约束并将它们维护在实例变量中是最简单的。然后你就可以将它们换入和换出。下面是代码的草图:

-(void)updateViewConstraints {
    [self.view removeConstraints:self.oneSideConstraints];
    [self.view removeConstraints:self.otherSideConstraints];
    if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
        [self.view addConstraints:self.oneSideConstraints];
    else
        [self.view addConstraints:self.otherSideConstraints];
    [super updateViewConstraints];
}

关于Xcode 根据屏幕方向更改约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501672/

相关文章:

objective-c - 如何在 iCarousel 中使用 UIPageControl?

ios - View 转换后调整 UICollectionView 的大小

ios - UIButton 在 UIScrollView 中不工作/不可点击

ios - Xcode 布局约束 : selecting divisions

ios - UIButton 图像不缩放

ios - 添加 NSArray 到 NSMutableArray

ios - 从 ECSlidingViewController 呈现模态视图 Controller

ios - NSUserDefaults 返回之前的结果

ios - 更改 iPhone 和 iPad 上的替代图标(setAlternateIcon for iPhone & iPad)

jquery - 移动 safari 链接在触摸后保持焦点