如何在 iOS 中为特定设备设置顶部空间限制?

Posted

技术标签:

【中文标题】如何在 iOS 中为特定设备设置顶部空间限制?【英文标题】:How to set top space constraint for specific device in iOS? 【发布时间】:2016-11-29 11:57:31 【问题描述】:

我正在使用Xcode7.3.1。我在我的屏幕上设置了Autolayout。它在 iphone5、6 等上完美运行。但在iphone4s 中无法正常看到屏幕。 这个屏幕我将顶部空间添加到 150。但是当我在iphone4s 中运行应用程序时,底部部分不可见。这里我附上 iphone4S 中的屏幕外观。如何解决这个问题?

顶部空间看起来像 xib

【问题讨论】:

能否请您发布约束层次结构的快照? 添加您的适当要求(例如您希望您的视图在中间,或者您希望它带有一些静态空间)和当前的约束以获得正确的解决方案! 【参考方案1】:

作为一个快速选项,您可以设置一个高度相对于屏幕高度的不可见间隔视图:将“等高”约束添加到主视图并将乘数设置为 0.1。因此,您的垫片将占据屏幕的 10%。 然后您可以将此视图用作顶部约束。

这是 Interface Builder 中的一个示例。我为垫片上色只是为了在这里显示它,所以不要忘记将其背景颜色设置为“清除颜色”。

【讨论】:

简单的解决方案大多是最好的。【参考方案2】:

您需要为顶部约束创建一个出口,并通过代码设置此顶部约束值,如下所示:

@IBOutlet weak var topConstForSubView: NSLayoutConstraint!

if  iPHONE4 
    self.topConstForSubView.constant = 60

【讨论】:

您可以类似地设置一个 NSLayoutConstraint 子类,以便使用 IBInspectable 属性为 iPhone 4 设置一个特殊常量。【参考方案3】:

作为@Sarabjit Singh 答案的变体: 可能是更好/不同的解决方案是采用 scale 进行不断修正:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *YConstraint;

...

- (void) viewWillAppear:(BOOL)animated 
    CGFloat scale = [[UIScreen mainScreen] scale];
    if (scale == 2) 
        self.YConstraint.constant = 75; // for example
     else if (scale == 3) 
        self.YConstraint.constant = 105; // for example
    

【讨论】:

以上是关于如何在 iOS 中为特定设备设置顶部空间限制?的主要内容,如果未能解决你的问题,请参考以下文章

AutoLayout正确定位按钮

如何在本地组策略对象中为特定用户应用软件限制策略?

如何在儿童版块中为 iOS 应用设置家长门

如何使用 jquery/javascript 在summernote 编辑器中为 textarea 限制第一个位置的空间

如何使用 Azure 在 Windows Phone 8 中为特定设备发送推送通知

如何在 iOS 中为特定应用程序打开或关闭“位置服务检查”