2014-09-24 58 views
9

這裏是我的故事板iOS 8的今天,控件對齊問題

enter image description here

我使用自動版式,和不使用大小類。

當我跑了它在iPhone 5S,它工作正常。(縱向和橫向) enter image description here

但是,當我跑了它在iPhone 6加(縱向),這不是正確對齊。 enter image description here

在iPhone 6 plus(橫向)上,情況更糟。 enter image description here

我知道我可以使用-widgetMarginInsetsForProposedMarginInsets:設置邊距,但在這種情況下,我需要爲每個設備定製邊距。這將是可怕的:(

那麼,有沒有對齊子視圖標題少痛苦的方式

+0

您是否使用自動佈局?如果是這樣,只需設置容器邊距約束。 – 2014-09-24 20:28:36

+0

但是什麼是保證金,它在不同的設備/方向上有所不同 – Keoros 2014-09-25 02:38:03

+0

我認爲系統爲每個設備設置了正確的邊距 – 2014-09-25 07:31:33

回答

5

看起來你必須手動設置它。您可以通過創建約束,然後指定一個IBOutlet並根據設備/方向設置常量來實現此目的。

供參考,在這裏是我找到你所需要的邊距:

  • 5S - 1(2像素)
  • 6 - 1(2像素)
  • 6加肖像 - 5(15像素)
  • 6加景觀 - 34(102px)

你可以找到你的擴展視圖的大小,這是414磅的肖像iPhone需要哪一個6

+0

iPad風景和肖像怎麼樣? – Erich 2014-10-16 19:41:26

9

將邊緣插圖設置爲零應解決問題:

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets 
{ 
    return UIEdgeInsetsZero; 
} 
+0

在iOS 9上,它完全刪除了插頁,看起來更糟糕。 – 2015-07-30 08:21:51

+0

謝謝〜它有很多幫助。在iOS 9.1上工作正常 – 2015-12-01 05:32:26

0

修復了某些設備。需要埃裏卡斯UIDevice-Extension

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets 
{ 
    defaultMarginInsets.bottom = 0; 

    if ([UIDevice.currentDevice.modelIdentifier containsString:@"iPhone7,1"] && self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) { 
     defaultMarginInsets.left += 5; 
    } else if ([UIDevice.currentDevice.modelIdentifier containsString:@"iPhone7,1"] && self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular) { 
     defaultMarginInsets.left += 34; 
    } else { 
     defaultMarginInsets.left += 1; 
    } 

    return defaultMarginInsets; 
}