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