2017-06-29 250 views
2

我正在製作主屏幕,我有4-5個按鈕。正如我們所知道的那樣,iphone 5/SE屏幕比iphone 6和7更小。因此,我們需要根據屏幕尺寸擴大和縮小按鈕尺寸。什麼是最好的方法或算法?我使用的固定最小尺寸的按鈕來處理iphone 5,但這些固定的小尺寸按鈕看起來很奇怪,當我們使用iphone 6和7.根據屏幕尺寸調整按鈕尺寸

+0

在UITableViewController而不是UIViewController中設計你的用戶界面,這樣它就可以適合每一個屏幕尺寸.. –

+0

向我們展示佈局你需要? 5個按鈕佈局水平或垂直。告訴我們你的方法,這將是有益的。 – luckyShubhra

+0

我希望這個鏈接解決你的問題https://stackoverflow.com/questions/29308941/scale-text-label-by-screen-size – Jay

回答

0

有幾種方法,我用來解決這個問題:

聲明模型中按鈕的大小。該模型應該有一個返回按鈕大小的方法,然後您可以修改每個設備/屏幕大小的值。例如:

class MyLayoutClass { 
    func getSizeForButton() -> CGSize { 
     if UIDevice.current.userInterfaceIdiom == .pad { 
      return CGSize(width: 100, height: 50) 
     } else { 
      // iphones 
      let bounds = UIScreen.main.bounds 
      // iphone SE has 320 width 
      if bounds.width > 320 { 
       return CGSize(width: 80, height: 50) 
      } else { 
       return CGSize(width: 50, height: 50) // smaller button size! 
      } 
     } 
    } 
} 

然後可以使用這個大小的屏幕依賴尺寸適用於您的按鈕

另一種方法涉及Interface Builder中。您可以將所有按鈕設置爲彼此具有固定的邊距,然後將「相等寬度」關係應用於彼此。見截圖例如:

enter image description here

0

您可以使用AutoLayout與約束或在XCode中AutoResizing

0

好辦法

您可以使用UIStackViewUITableViewUICollectionView的一樣。根據屏幕大小在運行時動態定義UICollectionViewCellUITableViewCell的大小。

手動方法

如果您已經添加了不同的5個按鈕,你不想去的上述變化,自動版式是在拯救你。 如果您需要水平放置它們,請定義Equal Widths約束條件。同樣在垂直定位的情況下,您可以指定Equal Heights約束。 您甚至可以在運行時根據屏幕尺寸計算寬度或高度,在運行時設置它!

希望它有幫助。快樂編碼!

0

有一種簡單的方法可以根據屏幕尺寸調整按鈕的大小。比如說,iPhone 5上的按鈕尺寸正確,寬度爲320,高度爲568。

聲明兩個類變量(或全局變量,如果要調整不同類別的按鈕)稱爲widthMultiplierheightMultiplier

var widthMultiplier = 0.0 
var heightMultiplier = 0.0 

在你viewDidLoad方法,添加以下代碼:

widthMultiplier = Double(self.view.frame.size.width)/320 
heightMultiplier = Double(self.view.frame.size.height)/568 

然後你可以根據這個調整你的按鈕大小:

button.frame.size.width = button.frame.width * CGFloat(widthMultiplier) 
button.frame.size.height = button.frame.height * CGFloat(heightMultiplier) 

如果需要,還可以調整該按鈕的位置,使其與屏幕尺寸成比例,以便在iPhone上顯示正確的位置6/7更大的屏幕尺寸,例如6/7 Plus:

button.frame.origin = CGPoint(x: button.frame.origin.x * CGFloat(widthMultiplier), y: button.frame.origin.y * CGFloat(heightMultiplier)) 

我希望這會有所幫助。