2016-11-29 20 views
3

我正在使用Xcode7.3.1。我在屏幕上設置了Autolayout。它在iphone5,6等上完美運行。但在iphone4s無法正常顯示屏幕。 這個屏幕我增加了150的頂部空間。但是當我在iphone4s中運行應用程序時底部部分不可見。在這裏,我附加了iphone4S中的屏幕。如何解決這個問題?如何在iOS中爲特定設備設置頂部空間限制?

enter image description here

頂層空間看起來像廈門國際銀行

enter image description here

+1

你能請張貼的約束層次的卡? –

+0

添加您的正確要求(如您希望您的視圖在中間或您希望它與一些靜態空間)和當前的約束有問題以獲得適當的解決方案! – Lion

回答

1

你需要爲頂部約束,並通過代碼創建一個出口,你需要設置這個頂部約束值,如下所示:

@IBOutlet weak var topConstForSubView: NSLayoutConstraint! 

if iPHONE4 { 
    self.topConstForSubView.constant = 60 
} 
+0

您可以類似地設置NSLayoutConstraint子類,以使用IBInspectable屬性方便地爲iPhone 4設置特殊常量。 –

4

作爲一個快速選項,您可以設置一個隱形的間隔視圖,該視圖的高度是相對於屏幕heig ht:在主視圖中添加「等高」約束,並將乘數設置爲0.1。因此您的分隔符將佔用屏幕的10%。 然後,您可以將此視圖用作頂級約束。

以下是Interface Builder中的示例。爲了在此處顯示它,我着色了隔離墊,所以不要忘記將其背景色設置爲「清除顏色」。 enter image description here

+0

簡單的解決方案大多數,如果不是總是最好的。 – n00bProgrammer

0

爲@Sarabjit辛格回答的變體: 可能是一個更好/不同的解決辦法是採取規模爲常數修正:

@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 
    } 
} 
相關問題