Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自动布局+;尺寸等级:可以区分不同的iPhoneX和其他设备吗?_Ios_Autolayout_Size Classes - Fatal编程技术网

Ios 自动布局+;尺寸等级:可以区分不同的iPhoneX和其他设备吗?

Ios 自动布局+;尺寸等级:可以区分不同的iPhoneX和其他设备吗?,ios,autolayout,size-classes,Ios,Autolayout,Size Classes,虽然autolayout和size类是定义不同约束以及不同设备(如iPhone和iPad)的不同布局的好方法,但似乎无法自动区分有(iPhone X、Xs等)和没有(iPhone 8、8 Plus、7等)安全区域的设备 这是正确的吗? 我的一个ViewController使用ScrollView作为根视图。内容显示一些信息,并在按钮下方显示,按钮位于屏幕底部附近,便于访问 虽然这在类似iPhone X的设备上非常有效,但在没有安全区域的旧设备上,如果不滚动按钮,则无法看到该按钮 我想使用大小类自

虽然autolayout和size类是定义不同约束以及不同设备(如iPhone和iPad)的不同布局的好方法,但似乎无法自动区分有(iPhone X、Xs等)和没有(iPhone 8、8 Plus、7等)安全区域的设备

这是正确的吗?

我的一个ViewController使用ScrollView作为根视图。内容显示一些信息,并在按钮下方显示,按钮位于屏幕底部附近,便于访问

虽然这在类似iPhone X的设备上非常有效,但在没有安全区域的旧设备上,如果不滚动按钮,则无法看到该按钮


我想使用大小类自动区分两种设备类型,以不同的方式定位按钮。然而,所有iPhone设备都具有紧凑的宽度和规则的高度。所以,没有办法使用大小类为不同的iPhone设备进行布局。是否必须以编程方式执行此操作?

您是正确的,目前无法区分具有顶部和底部填充的设备与仅使用大小类的其他设备

这是因为“安全区域”也存在于其他iPhone(iPhone 8、8 Plus、7)中,但它等于视图控制器的前导边距和尾随边距(safeAreaInsets=0)

苹果正试图使我们的布局独立于safeAreaInsets值


我同意您的看法,这将是一个非常有用的实现。

您可以使用以下类

直接从故事板添加到项目并更改常量

我已经很久没有更新了,所以您可能需要根据您的要求使用

//
//斯威夫特先生
// 
//
//由Prashant于2018年8月29日创建。
//版权所有©2018 Prashant。版权所有。
//
进口基金会
导入UIKit
@可设计的
公共类LayoutConstraint:NSLayoutConstraint{

//MARK:static let iPhoneX=(UIDevice().userInterfaceIdiom==.phone&&max(UIScreen.main.bounds.size.height,UIScreen.main.bounds.size.width)==812)是的,我们知道,但是您没有使用大小类,而且这只考虑iPhone X,而不是XS,XR,etcSize类不能用于此。对于iPhone XR,将812替换为896;对于iPhone XS(与iPhone X相同)感谢您的澄清!@Friend我知道这可以通过代码来解决,但问题是是否有一个简单的解决方案可以在IB中使用大小类或类似的东西来实现这一点。