2017-06-03 65 views
-2

为了这个问题的基本性质,提前道歉。我很高兴被重定向到此问题的以前回答的版本,但还没有找到它。如何为不同设备自动布局应用程序。

我刚刚完成了我的第一个应用程序的大部分,并担心我可能会以错误的方式设置它。

我的应用程序在iphone7上看起来“很好”,但是当我将设备更改为7+时,视图控制器的底部和右侧边缘上有空白空间,当我在iphone 5上运行它时,视图不适合。

有没有办法让我的应用程序的视图自动伸展/凝结到任何设备?或者,我预计这种方式更复杂吗?我想相信有一个简单的解决方案,但我还没有找到它。

谢谢!

+0

您的标题说明了一切,您想使用自动布局!有很多这方面的教程:) –

回答

3

好的,这对你来说将是一项长期任务。我会列出你需要学习的主题,以便正确理解它。

  1. StackView
  2. 内容拥抱优先/抗压重点
  3. 约束优先
  4. 尺寸为类不同的UI元素

相关链接:

  1. 关于Autolayout的一些奥秘的官方教程(Part 1Part 2)。
  2. 官方Guide在Autolayout。
  3. 其他在线资源

如正确地由J. Doe的提及,答案就在你的问题

+0

谢谢。此视频有助于向我提供我需要的信息:https://www.youtube.com/watch?v=RH_Ye-8ii8E&t=45s – tfcamp

0

如果只支持肖像模式然后。

  1. 首先选择design.As您选择iphone 7. 我选择iphone 7加一个基地布局。

  2. 创建一些常量。

为什么?

要创建一个宽高比乘以你的每个约束的常量值,你画在iphone 7 layout.so,它会根据设备正确计算。

像这样。

var SCREEN_WIDTH = UIScreen.main.bounds.size.width 
var SCREEN_HEIGHT = UIScreen.main.bounds.size.height 
var BASE_SCREEN_HEIGHT:CGFloat = 736.0 
var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT) 
var ASPECT_RATIO_RESPECT_OF_7P = SCREEN_MAX_LENGTH/BASE_SCREEN_HEIGHT 

您也可以使用我的。如果您的基本布局是iPhone 7Plus。

如何使用?

假设您在iphone 7 plus中为标签绘制了一个约束为10的顶部约束。 然后创建一个函数,并在viewDidLoad中调用它来支持纵向模式下的所有设备。

func updateConstraint() { 
    topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7P 
} 

如果你支持景观模式

  1. ,如果你想改变景观布局,那么你需要设计landscape.As大部分的网点只要将这里和那里你只需要改变顶部左下限的约束。因此,在这种情况下,请卸载先前的约束并安装另一个约束,并使其仅适用于大小类别

有很多在线教程的约自适应布局like this.

  • 如果你不希望根据纵横比改变的布局,但正确地计算,则有是在定向过程中触发的功能。

    倍率FUNC viewWillTransitionToSize(尺寸:CGSize, withTransitionCoordinator协调器: UIViewControllerTransitionCoordinator){ 如果UIDevice.currentDevice(){orientation.isLandscape.boolValue打印 ( “横向”) imageView.image = UIImage的(命名为: CONST2) }否则{ 打印( “纵向”) imageView.image = UIImage的(命名为:常数) } }

  • 应用逻辑在该功能支持所有设备:)

    +0

    谢谢。此视频有助于向我提供我需要的信息:youtube.com/watch?v=RH_Ye-8ii8E&t – tfcamp

    相关问题