ios - iPad 纵向和横向自动布局

标签 ios objective-c ipad ios8 autolayout

鉴于我们只有 iPad 纵向和 iPad 横向的通用尺寸类别,您最终如何针对不同方向自定义 iPad 的自动布局行为/约束?

我想在肖像中有这样的东西:enter image description here

景观中的这个:enter image description here

最佳答案

在 iOS 8 中,您可以使用 viewWillTransitionToSize:withTransitionCoordinator: 在 Controller 旋转时收到通知。使用高度与宽度的比率来确定您要移动到的方向,并相应地调整约束。您可以根据 View 的高度和宽度约束创建 IBOutlet,并在该方法内更改它们的常量值。

实现此目的的另一种方法是将乘数和常数一起使用,以自动调整旋转约束。例如,相对宽度约束的公式为:

subview.width = superview.width * 乘数 + 常量

例如,如果您想要纵向 View 全宽 (768) 和横向 View 全宽 350,您需要求解这两个方程,

768 = 768 * m + c   and   350 = 1024*m + c

Solving those, gives you m= -1.6328  and   c= 2022

要使用此功能,您可以在 IB 中为 subview 设置宽度约束,但选中“在构建时删除”框,以便将其删除并替换为您在代码中添加的宽度约束。

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.subView attribute:NSLayoutAttributeWidth relatedBy:0 toItem:self.view attribute:NSLayoutAttributeWidth multiplier:-1.6328 constant:2022]];
}

通常,您可以在 IB 中完成这一切,但前提是乘数为正;我已经用这些数字进行了尝试,系统不允许我使用负数作为乘数。

关于ios - iPad 纵向和横向自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549987/

相关文章:

ios - IOS 中带有确认对话框的 Segue

android - AdMob 中介(Android 和 iOS): how to force a network to test it?

ios - 如何使用扩展设置 viewController 搜索栏的委托(delegate)?

IOS subview 自动调整轮帧值

ios - 由于内存原因,App在iPad 1和iPad 2上崩溃的原因更多:为什么?

ios - iOS 中的 Mod 运算符

ios - 我如何转储 `VM: Mapped File` ?

objective-c - 这些对象什么时候在 ARC 下被释放?

ios - 从 iPad ( Objective-C ) 到 MVP Web API (C#) 的时区映射

iphone - 向 NSMutableURLRequest 添加字段