在Xcode 6中,我们有一个称为自适应布局的新功能.通过使用我创建了一个新项目,我需要根据布局不同的字体大小.
在iPhone 3.5英寸屏幕中,我的字体大小必须为17pt,iPhone中的其他屏幕尺寸必须为21pt.
谁能告诉我如何使用自适应布局实现这一目标?
我正在开发一个iOS8大小类的通用应用程序.我有一个必须在iPad和iPhone上显示不同图像的imageview,我不想使用两个图像视图并在不同大小的类上安装或者以编程方式更改图像,因为我认为应该有一种更简单的方法.
在此先感谢亲切的问候阿里
我很高兴得知Size Classes与iOS 7向后兼容(在某些情况下).现在我想知道 - 有没有办法使用Size Classes来区分iPhone 5,6和6 Plus?
设置estimatedRowHeight和rowHeight的UITableView使表视图计算每个细胞的适当的高度.在我使用大小类之前,它就像一个魅力.看起来所有的计算都是针对Any/Any size类进行的,稍后会应用更大的字体.结果,没有正确计算单元的高度并且标签不适合.
这是我的代码:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.estimatedRowHeight = 50
self.tableView.rowHeight = UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Reuse", forIndexPath: indexPath) as! MyTableViewCell
println("Label font size: \(cell.myLabel.font)") // it prints (...)font-size: 11.00pt for all the size classes
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
布局看起来像这样: …
我正在为iOS7和8 iPhone开发.由于iOS7不支持紧凑高度大小类,我认为解决这个问题的共识是使用任意大小的类来构建横向iPhone布局,并使用纵向宽度常规高度(cWrH)大小类来实现肖像iPhone布局.
我在any-any中对视图设置了约束,然后将cWrH中的约束常量修改为特定于该size类.但是,iOS7设备和Xcode预览会忽略any-any约束,并对纵向和横向使用cWrH约束.
我不知道为什么会这样.我想要做的就是根据方向设置不同的约束.
使用最新的Xcode 6.0.1可以轻松复制.
半相关:Xcode 6自适应UI如何与iOS 7和iOS 6向后兼容?
屏幕截图如下:

我正在使用大小类来创建一个故事板,可以针对所有不同的屏幕尺寸和方向.我一直在Any Width-Any Height size类中工作.我遇到了显示问题并决定在Compact Width - Regular Height size类中进行这些更改.稍后,通过对Any Width-Any Height size类进行约束更改,我能够解决布局问题.如何还原对"紧凑宽度" - "常规高度"大小类所做的更改,以便在运行时使用"任意宽度 - 任何高度"类,而无需手动还原更改?
我有一个动态的按钮设置,可根据故事板中设置的自动布局约束自动调整宽度和高度.在纵向时,按钮具有相等的宽度和高度,因此框架是完全正方形的,当设备旋转到横向时,按钮变得更短更宽.我已经设置cornerRadius了按钮的图层,因此它们在纵向时是完美的圆形并且效果很好,但是当我旋转到横向时,角落半径看起来不再明显.我需要改变它,所以它变成了椭圆形.问题是,无论我在哪里尝试放置代码,我都无法获得旋转发生后按钮的正确宽度和高度.我希望在旋转设备时发生这种情况 - 不想等到旋转完成.理想情况下cornerRadius 在过渡动画时会为变化添加动画效果.
如果我使用viewWillLayoutSubviews或者viewDidLayoutSubviews,它在应用程序启动时正确获取按钮框架,但在旋转到横向时,在为新方向更新按钮的框架之前调用此方法,因此我无法计算正确的角半径.
如果我使用viewWillTransitionToSize:withTransitionCoordinator:或willTransitionToTraitCollection:withTransitionCoordinator:或者willRotateToInterfaceOrientation,当应用程序被启动,并在旋转架为新的大小更新之前,它被称为设备就不会被调用.
如果我使用willAnimateRotationToInterfaceOrientation,则在启动应用程序时不会调用它,但在旋转设备时它会正确获取新的按钮框.但是这种方法已被弃用.
所以问题是,您可以使用什么方法根据旋转完成时按钮的大小来设置按钮的属性,这是在旋转完成之前调用的?
请注意,需要为每个方向更改调用它,而不仅仅是大小类更改(旋转iPad不会更改大小类).我只需要支持iOS 8.0+.
这是我在方法中放置的代码,以确定它是否获得正确的大小:
println("\(button.frame.size.width) x \(button.frame.size.height)")
Run Code Online (Sandbox Code Playgroud) 我没有使用自动布局,但我希望能够使我的(非常复杂的)应用程序适应iPad上的Split View多任务处理.为此,理想情况下,我想支持大小类,而不是沿着自动布局路线.观看WWDC 406会话似乎可以以编程方式执行此操作,但我不确定,因为他们在每个示例中都使用了Autolayout,否则甚至Interface构建器也不支持它.
如果我要收听有关特征变化的通知并以编程方式执行所有操作或使用引脚和支柱,我会遇到任何问题吗?我在Storyboard中定义了所有内容,但是当iPad在iOS 9中并排显示两个应用程序时,我希望能够支持不同大小的视图控制器.请提供建议.
在我的应用程序中,某些视图控制器在iPad上(或者更具体地说,是一个常规的水平尺寸类)将它们作为弹出窗口显示是有意义的,但是在iPhone(或紧凑的水平尺寸类)上推送它是有意义的他们到导航堆栈上.有一种优雅的方式来支持这个吗?默认情况下,如果我使用"Present as Popover"segue,它将在iPhone上以模态方式显示,这不是我想要的.
我找到了一种方法来获得我想要的行为,但它很难看,而且容易出错.我根据我目前所处的大小类选择两个不同的segue.为了支持iOS 9多任务,我实现[UIViewController willTransitionToTraitCollection:withTransitionCoordinator]并在弹出窗口和导航控制器之间手动移动视图控制器(这部分看起来特别容易出错).
似乎应该有一些简单的方法来实现自定义segue来处理这个,或者某种自定义自适应表示控制器,但我还是无法绕过它.有人做过这样的成功吗?
我有一个专为iPhone SE设计的ViewController
如你所见,我也有一个约束 Align Top to: Safe Area Equals 75
问题是,是否可以为iPhone 8和iPhone 8 Plus更改此值?例如:
ios ×10
size-classes ×10
autolayout ×2
iphone ×2
xcode ×2
xcode6 ×2
adaptive-ui ×1
ios8 ×1
ipad ×1
objective-c ×1
popover ×1
storyboard ×1
swift ×1
uiimageview ×1
uistoryboard ×1
uitableview ×1