IOS懸浮視窗之——Popover實現原理分析

來源:互聯網
上載者:User

目前那些popover的menu,loadingview之類的都是搞view,可以解決。但顯示的時候其實挺麻煩的,得先保證全屏,在addsubview,消失時又得removefromsuperview,還得保證這個view在最上層,代碼得可重用度也不高。


其實iphone程式是支援多視窗顯示得,而且還支援分層顯示,就是設定window得windowlevel。Mac上有類似的屬性可以得到很多不同效果的window顯示。


那我們完全可以alloc一個window,並讓之成為keywindow,那麼所有的touch事件都會被它捕獲到。並且它是個view啊,那就可以addsubview,可以設定backgroundcolor,那麼問題就簡單了,大家應該可以理解ipad 上的popoverwindow原理了。


那就是產生一個fullscreen的windowlevel為UIWindowAlertLevel的window,且backgroundcolor為clearcolor,然後把要顯示的controller的view加到subview,並且在drawrect中圍繞這個view的周圍畫上邊框,在彈出點畫上個箭頭,最後以動畫的方式顯示出來就好啦,然後點擊window空白地方時讓它動畫消失即可。

那UIAlertView就更簡單了,雖然它是繼承自UIView,但它的實現應該跟UIWindow差不到哪裡去,其實它內部也應該是個window,根據不同的subviews設定不同的內容高度,調整內容的size等。

代碼實現地址:http://www.cocoachina.com/bbs/read.php?tid-30657.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.