控件不顯示可能是哪些原因?
是日常開發中,特別是對于初學者而言,我們編寫代碼,一步一步的驗證的時候,時常會出現控件無法顯示的情況, 這里我總結了幾種可能出現控件不顯示的情況和原因, 希望能對iOS初學者能提供一些解決問題的思路和有更多的幫助:
*某個控件顯示不出來可能導致的原因:
1. frame屬性,是否為0,或者設置的位置不對
在開發中,特別是在自定義某些控件的屬性的時候, 對于控件的frame如果沒有設置,或者設置錯誤了,控件肯定是不會顯示正常的,所以當你遇到控件顯示不正常的時候,第一個需要思考的就是控件本身的frame屬性是否正常;
2. hidden =YES
多數情況下,我們需要對控件的hidden屬性,也就是是否隱藏,作一些自定義, 所以,如果你檢查了frame屬性,確定是對的,但是控件還是不能顯示,那么你可以來考慮一下是不是在某個時刻我們對這個控件的hidden屬性做了設置;
3.是否添加到了父控件中
還有一種情況,那就是,當我們需要把某個控件添加到一個父容器(父控件)中才會顯示的時候,如果,我們忘記了添加的步驟,也是不會顯示控件的,所以,這個時候,你不妨來檢查一下這個方面;
4. Alpha <= 0.01
通過蘋果的官方文檔,我們知道,當一個控件的透明度大于>0.01的時候,是可以監聽事件的,否則(<=0.01),是無法監聽事件的, 所以,如果Alpha<= 0.01.系統就認為這個控件不存在,此時不能監聽事件,當然,也就在運行的是無法查看到控件了,
5.被其他控件擋住了。?
?控件與控件之間都是有先后層疊次序的, 如果我們需要顯示的控件被其他控件給擋住了,那肯定是看不到控件的顯示的,也就是我們常說的:后添加的控件默認是添加在最上層的;
這個時候,我們可以去檢查一下控件的層疊次序,如果,你已經可以固定某一個控件在最上面,你可以調用一個方法,把它始終置于最上層: 如:
[self.view bringSubviewToFront:redView];
通過bringSubviewToFront:這個方法,你就可以始終把某一個控件置于最上層, 當然,有最上層也就有最下層,如下:
//把中間圖片按鈕放置在所有圖層的最上面
[self.viewbringSubviewToFront:self.minidleIamgeViewButton];
//把背景圖片始終置于最下面一層
[self.viewsendSubviewToBack:self.downImageView];
6.檢查父控件的上面這5種情況。
如果,上面5中情況,你都檢查了,還是沒有找出原因,那么可能出現問題的是你的父控件了,所以,你可以在逐步的檢查父控件的這幾種情況;
上面的小總結,是我日常開發中的一些思考,希望能給大家帶來幫助,
詳情可查看我的GitHub項目:?
https://github.com/DXSmile/Control-view-does-not-show-what-might-be-the-reason-/tree/master