Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >iPad的自动输出与约束

iPad的自动输出与约束
EN

Stack Overflow用户
提问于 2013-05-24 00:32:04
回答 2查看 1.7K关注 0票数 0

我对xCode 4.5的新的自动布局功能感到非常困惑。

这是我想做的,

通过设置故事板,我设置了这个肖像视图。

通过使用自动收费表和约束(和引脚),当布局翻转到这样的景观时,我如何转换它?

我尝试编码和改变CGRect(大小和坐标位置)的视图时,它的美化,但没有任何效果。

EN

回答 2

Stack Overflow用户

发布于 2013-05-24 07:46:13

NSLayoutConstraints取代了自动布局中对CGRects的需求。首先,用文字描述你的布局。下面是我描述你肖像的例子:

  • 红色的宽度是其superview的60%。
  • 蓝色的高度是其superview的55%。
  • 蓝色的左右边正在接触它的超级视图。
  • 红色的左侧边缘接触其超级视图,红色的右侧边缘接近黄色的左侧边缘,黄色的右侧边缘接近其超级视图的边缘。
  • 蓝色的顶部边缘接触到它的超级视图,蓝色的底部边缘接近红色的顶部边缘,红色的底部边缘接近其超级视图的边缘。
  • 蓝色的底部边缘接近黄色的顶部边缘,黄色的底部边缘接近其superview的边缘。

下面是一种删除superview现有约束的方法,然后为给定的接口方向应用新的约束。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void) buildConstriantsForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Remove existing constraints.
    [superview removeConstraints:superview.constraints] ;
    // Build an array to hold new constraints.
    NSMutableArray* constraints = [NSMutableArray new] ;

    // Add 2 constraints that apply to both Portrait & Landscape orientations.
    [constraints addObject:[NSLayoutConstraint constraintWithItem:red  attribute:NSLayoutAttributeWidth  relatedBy:NSLayoutRelationEqual  toItem:superview  attribute:NSLayoutAttributeWidth  multiplier:0.6  constant:0]] ;
    [constraints addObject:[NSLayoutConstraint constraintWithItem:blue  attribute:NSLayoutAttributeHeight  relatedBy:NSLayoutRelationEqual  toItem:superview  attribute:NSLayoutAttributeHeight  multiplier:0.55  constant:0]] ;

    // Build a dictionary to store references to NSViews.
    NSDictionary* views = NSDictionaryOfVariableBindings(superview, blue, red, yellow) ;
    // To eliminate repeated NSLayoutConstraint code, build an array of Format Strings with which to build constraints.
    NSArray* formatStrings ;
    if ( UIInterfaceOrientationIsPortrait(interfaceOrientation) ) {
        formatStrings = @[@"H:|[blue]|", @"H:|[red]-[yellow]|", @"V:|[blue]-[red]|", @"V:[blue]-[yellow]|"] ;
    }
    else {
        formatStrings = @[@"H:|[blue]-[yellow]|", @"H:|[red]-[yellow]", @"V:|[blue]-[red]|", @"V:|[yellow]|"] ;
    }

    for ( NSString* formatString in formatStrings ) {
        [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:formatString  options:0  metrics:nil  views:views]] ;
    }

    // Add the newly created constraints.
    [superview addConstraints:constraints] ;
}

每当视图加载或旋转时,都可以调用该方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void) viewDidLoad {
    superview.translatesAutoresizingMaskIntoConstraints = NO ;
    [self buildConstriantsForInterfaceOrientation:self.interfaceOrientation] ;
}

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self buildConstriantsForInterfaceOrientation:toInterfaceOrientation] ;
}
票数 2
EN

Stack Overflow用户

发布于 2013-05-24 07:46:04

Autolayout擅长表达一个对象与另一个对象之间的关系并解决冲突,但它没有内置任何条件概念。对于您的布局,我认为您可能会发现添加和删除旋转约束是最简单的,请查看Class/NSLayoutConstraint/NSLayoutConstraint.html以了解如何添加这些约束的详细信息。

你也可以设置你的约束和调整优先级,以便它在旋转时做正确的事情,但它将需要一些测试和调整才能使它正确运行。我在本地做了一些测试,我认为我让它做了正确的事情,但这只是一个没有固有内容大小的空视图。尽管如此,我认为这是通过故事板来完成这一切的必要条件:

  • 确保蓝色视图有宽度<=、纵向宽度和>=最小景观宽度
  • 确保红色视图有最小高度
  • 固定黄色视图的宽度,并将高度设置为>=肖像高度
  • 将每个视图锚定到它始终保留的角落(例如,引脚尾随,底部到superview表示黄色)
  • 以较低的优先级将黄色视图的顶部与蓝色视图对齐
  • 提高黄的抗压强度

我认为这是从蓝色视图开始,蓝色视图具有相当高的优先级最大大小,黄色视图知道如何向上扩展,但优先级较低。当它旋转时,蓝色视图保持其最大大小,这将释放黄色视图以向上扩展。然后,我填写所需的约束,以使事情保持一致。

这是相当复杂的文字描述,这里有一个屏幕抓取显示三个视图和它们之间的限制。它并不能显示一切,但至少可以查看视图之间的关系:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16730720

复制
相关文章
检查约束与默认值约束
检查约束(CHECK Constraint)是一种用于限制列中允许的值的约束。使用检查约束可以确保列中的值满足一定的条件。在MySQL中,检查约束是使用CHECK关键字来创建的。
堕落飞鸟
2023/05/11
1.1K0
MySQL——函数与约束的讲解
函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在 MySQL 中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那 么,函数到底在哪儿使用呢?
网络豆
2023/10/17
2550
MySQL——函数与约束的讲解
时序分析笔记系列(五)、IO约束与时钟约束
管脚约束就是指管脚分配,指定管脚的PACKAKE_PIN(管脚位置)和PACKAGE_IOSTARD(电平标准)两个属性的值。
根究FPGA
2020/06/29
2.7K0
iPad到了
4k拿下256G,虽然做为数字入门款,但是作为不玩游戏的学生党,够用了,这个会一直用到考研完再换了。
用户2590762
2022/11/11
1K0
iPad到了
MySQL 约束与自增长
约束用于确保数据库的数据满足特定的商业规则。在mysql中,约束包括: not null、unique,primary key,foreign key,和check五种。
用户9615083
2022/12/25
3.1K0
MySQL 约束与自增长
SAS-交叉表的自动输出
许久没写公众号了,日前有人留言询问最近有无更新,于是小编就来更新了。今天小编打算给大家分享一下SAS实现交叉表的自动输出,交叉表是临床试验编程中非常常见的一种表格的类型,实现起来的程序也还是比较简单的。
Setup
2019/10/19
3K0
SAS-交叉表的自动输出
XML文件约束与DTD的简单介绍
我们编写文档来约束一个XML文档的书写规范,这称之为XML约束。
MonroeCode
2018/01/12
2K0
XML文件约束与DTD的简单介绍
ANSYS里的对称与反对称约束
首先回顾一下结构力学里的概念:在平面内绕对称轴旋转180度,荷载的作用点重合,作用方向相反便是反对称荷载,如果荷载的作用点重合,作用方向相同,便是正对称荷载。通常情况下,当结构受到对称(反对称)荷载作
fem178
2018/04/08
4.2K0
ANSYS里的对称与反对称约束
iOS中Cell约束--使用xib实现多label的自动约束--高度随内容自适应
made in 小蠢驴的配图        说起iOS开发,很多人的印象就是-弄一个tableView,把数据全丢到上面展示,听起来好像很粗糙,不过仔细一想,确实展示数据内容的,用的tableView是最多的了吧,说到这里,今天的男一号-tableViewCell就要登场了。       本文的主题是--tableViewCell的高度自适应,计算cell高度的方法确实有好几种,因为做cell的时候,比较简单的界面我都是直接拉xib,手动连接约束比较省事,所以今天就来探索一波-- 使用xib实现cell高度
小蠢驴打代码
2018/05/24
3.6K0
知识的输入与输出
哈喽大家好,我是海怪。最近有人问我该如何学习 React?我觉得对 “知识的输入和输出” 这个话题还是比较有感触的,所以今天想给大家分享关于知识的输入与输出。
写代码的海怪
2022/03/29
4300
知识的输入与输出
Python的输入与输出
在Python中,使用内置函数input()可以接收用户的键盘输入 input()函数的基本用法如下:variable = input() 参数说明如下: variable:为保存输入结果的变量 双括号内的文字用于提示要输入的内容 实例:接收用户输入的结果并保存到demo变量中
hacker707
2023/04/17
5730
Python的输入与输出
MySQL—数据类型与约束
整数类型可分为五种:TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT
海盗船长
2020/08/28
1K0
iOS---iPad开发及iPad特有的特技
iPad开发简单介绍 iPad开发最大的不同在于iPhone的就是屏幕控件的适配,以及横竖屏的旋转。 Storyboard中得SizeClass的横竖屏配置,也不支持iPad开发。 1.在控制器中得到设备的旋转方向 在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向。 在iOS7及以前得到屏幕旋转方向的方法 /** // UIInterfaceOrientation ,屏幕方向 UIInterfaceOrientationUnknown = UIDeviceOrientationUn
用户1941540
2018/05/11
2.6K0
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类:
Winter_world
2020/09/25
14.7K0
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
复杂约束下自动驾驶车辆的运动规划解析
Motion Planning是在遵循道路交通规则的前提下,将自动驾驶车辆从当前位置导航到目的地的一种方法。
一点人工一点智能
2023/03/29
6160
复杂约束下自动驾驶车辆的运动规划解析
PHP的输入与输出(input与$_GET[“key“])
关键字【input与$_GET["key"]】 输入页面: <html> <head> <meta charset="utf-8"> <title>测试</title> </head> <body> <form action="index.php"> <p> 数a: <input type="text" name="a"> </p> <p> 数b: <input type="text"
红目香薰
2022/11/29
5660
PHP的输入与输出(input与$_GET[“key“])
扔掉数据线,搞定 iPad 与 Windows 互联
看了一些书,有实体书,有电子书。攻读枯燥的理论,就看实体书;整理知识框架,就看电子书。就像小时候喜欢剪报,看到一块有用的,就剪下来,剪的多了,就可以拼成一个主题。
Lenis
2021/05/20
1K0
关于iPad的100个问题
大屏iPad可以作为MacBook的扩展屏幕,打开MacOS随航,连接iPad,MacBook就有了两个屏幕~
zhaoolee
2020/11/24
2.1K0
关于iPad的100个问题
点击加载更多

相似问题

更改iPad的自动布局约束

20

Xcode - iPad上的约束-景观与肖像

44

与iPhone 4和iPad不同的约束

22

如何为iPhone和iPad设置自动收费约束

11

iOS自动输出相同宽度约束

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文