popover

目前那些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

你可能感兴趣的:(ios)