iOS 讓UIButton根據文字內容自動計算寬高


Xcode自帶的UIButton控件是沒有辦法根據文字內容計算自身的寬和高的,下面演示一下問題,

我用代碼方式創建一個UIButton,並且設置了一些屬性,下面看一下效果圖

一切都是這么的美好,跟我們想要的一樣啊,btn也跟着文字內容進行自身寬高的更改了啊!那我再設置多一點文字

懷着滿懷激動的心情,再看一下效果圖

哇哦,怎么變成這個樣子了。文字內容都超出btn控件了,跟我們想象的不一樣啊。這個問題該如何解決呢?

既然Xcode自帶的UIButton類滿足不了我們的需求。那么我們就自定義一個UIButton類,只需要繼承UIButton就可以了

我在.m文件中重寫init方法

其實就是實例化的時候,給Button內部添加了一個uilable控件,這個uilable控件和button之間有約束。首先大家應該懂得系統自帶的button控件中有兩個子控件,UIImageView 和 UILable,

因為系統自帶的UILable和父控件UIButton之間的約束不滿足我們目前的需求,所以我重新創建一個UILable,自己設置約束,把文字信息顯示在自己創建的UILable上面,不用系統自帶的uilable了。下面重寫方法

當我把這三個方法重寫完畢以后,我再給btn設置有關文本的屬性的時候,就會調用上面的方法,那么,我重寫就是為了把文字信息本來是設置在UIButton自帶的UILable上面的,我重寫以后就會把文字信息設置在我自己創建的lable上面,lable會根據文字內容改變自己的大小,因為lable與button之間也有約束,所以Button也會跟着改變了。

下面看一下效果

和我們想要的效果就一樣了。

總結:由於UIButton控件有兩個子控件:UIImageView(用來顯示圖片),UILable(用來顯示文字);但是系統定義的UILable和UIButton之間的約束不滿足我們目前的需求,所以我自己定義一個類,繼承UIButton,在初始化的時候,給UIButton再添加一個自己定義的UILable控件,把這個UILable控件和Button之間的約束設置為目前我們需求的約束。當我再給Button設置文字的時候,就設置給自定義的UILable控件中(也就是重寫的那幾個方法),這個時候自定義的UILable灰根據文字的內容自動計算自己的寬高,因為UILable和button之間有約束,button自身的寬高也會跟着改變。所以button本身自帶的UILable我們就不使用了,

 


免責聲明!

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



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