1. 程式人生 > 實用技巧 >iOS - 自定義 xib View 自動調整高度

iOS - 自定義 xib View 自動調整高度

在iOS開發過程中,我們經常需要自定義檢視,檢視的內容一般都是固定的提示,包含一些文字、按鈕等等。當需要顯示的時候,一般需要固定檢視的大小,不需要根據螢幕大小做調整,不論是在螢幕較小的手機上,還是在螢幕較大的iPad上面,顯示都需要效果一樣。

比如我們需要在螢幕中間彈出以下提示框:

以上彈出框在低解析度的手機上顯示沒有問題,但是在高解析度的時候就會出現問題,登入按鈕被遮擋,原因就是由於第二個裝置的解析度較高,而我們顯示檢視的時候是會指定檢視大小,在不同解析度的螢幕上就會顯示高度不同,導致到解析度裝置顯示不全

以上檢視是在xib中設計的,檢視中的控制元件位置和大小都是通過約束設定的,設計的時候每個裝置都沒有問題,不會出現遮擋問題;在檢視中,最底下的登入按鈕並沒有設定底部約束,如果通過設定底部約束,可以避免登入按鈕顯示在檢視範圍內,但是會遮擋中間的文字,所以我們有必要在檢視顯示時調整檢視大小。

那麼我們在哪裡調整檢視大小呢?在 layoutSubviews 中根據登入按鈕的底部位置和高度調整當前檢視的高度:檢視高度 = self.signInButton.frame.origin.y +self.signInButton.frame.size.height + 16.0,具體程式碼如下:

    override func layoutSubviews() {
        super.layoutSubviews()
        
        // 調整檢視大小
        self.frame = CGRect.init(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.signInButton.frame.origin.y + self.signInButton.frame.size.height + 16.0
) }

通過以上程式碼即可調整檢視的大小,使得檢視顯示正常。