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

來源:互聯網
上載者:User

標籤:

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我們就不使用了,

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.