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)
    }

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM