iOS-如何区分iPhone屏幕



我的应用程序被拒绝了,因为它在iPhone 4s和iPhone分辨率中的iPad上看起来不错。我有一些按钮在该分辨率上重叠一些字段。问题是现在我已经研究了Xcode,并且看到所有非Plus iPhone型号的尺寸类别都相同。我如何在它们之间有所作为?我在代码中添加这些按钮。其他字段添加在ib。

编辑:代码中添加的那些按钮以绝对坐标放置,IB中添加的字段使用自动布局。

您可以根据高度UIScreen.main.bounds.height <= HeightConstant.iPhone4sHeight

区分不同的设备

电话的高度值

static let iPhone5sHeight: CGFloat = 568 static let iPhone4sHeight: CGFloat = 480

通常,我不会使用故事板:p,但是在这种情况下,由于您使用的是故事板,因此可以使用特质。这些特征将使您使用大小,方向或设备为同一控制器设计多个设计。

http://www.techotopia.com/index.php/using_trait_variations_to_to_design_adaptive_oadaptive_ios_user_interfaces

这是没有任何代码的最干净的解决方案。

尽管我有点迟到了,但我以前遇到了确切的问题。

步骤1:

使用基本屏幕进行设计。我选择iPhone 7 Plus。

步骤2:

定义一些常数。

为什么?

我们需要用自动划分约束的常数乘以。

为什么要自动 -

如果您想在所有设备中调整应用程序,必须使用 自动layout 大小类

我给你我的常数:

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

步骤3:

你完成了。现在如何使用此。假设您确实自动使用了一个按钮,该按钮带有常数30

in viewDidload

只是写:

yourButtonLeadingConstraint.constant = 30 * ASPECT_RATIO_RESPECT_OF_7P

仅对于此行,它将在所有其他设备中保持30px的长宽比。

步骤4:

设备方向如何?

有一个称为

的函数
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
        if UIDevice.currentDevice().orientation.isLandscape.boolValue {
            print("Landscape")
            //write your code here such changing autolayout value
        } else {
            print("Portrait")
           // write your code here such changing autolayout value
        }
    }

利用此方法处理方向更改。

注意:

如果您想更改景观模式的布局,也可以做到。关于如何做的有很多教程。我认为您可以用Google进行搜索并找到合适的答案。

最新更新