做过Android开发的Iphone开发人员也许会很怀念android的Toast,可以苹果并没有提供现成的API,网上搜索了一下,发现有一个开源的itoast,网址:http://code.google.com/p/toast-notifications-ios/,下载回来看一看,这个紧是个半成品,不支持屏幕旋转,这显然没有满足我们的要求,网上很多都是直接写一个UIView之后嵌入到当前的ViewController,并bringSubviewToFront到最顶层,可是当右多个ViewController的时候又又很多问题,还是不好用,下面我们来说说如何实现真正的iphone下面的Toast.这里提几个要点:
1,支持屏幕旋转:
?
UIWindow?*window = [[[UIApplication?sharedApplication]?windows]?objectAtIndex:0];
//注意哦下面的写发
[[[window?subviews]?objectAtIndex:0]?addSubview:self];
?
2,显示屏幕正中央:
?
UIWindow?*window = [[[UIApplication?sharedApplication]?windows]?objectAtIndex:0];
self.frame?=?CGRectMake(window.center.x-imSize.width/2, window.center.y-imSize.height/2, imSize.width, imSize.height);
self.autoresizingMask?=?UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
3,重写UIView的layoutSubviews,如下代码片段。
?
-(void) layoutSubviews{
? ??UIWindow?*window = [[[UIApplication?sharedApplication]?windows]?objectAtIndex:0];
?
?
?? ??CGSize?imSize = (initType?==IMAGE_TYPE)?(imageView.frame.size):(contentView.frame.size);
? ??UIInterfaceOrientation?orientation = [UIApplication?sharedApplication].statusBarOrientation;
? ??switch?(orientation) {
? ? ? ??case?UIInterfaceOrientationPortrait:
? ? ? ??case?UIInterfaceOrientationPortraitUpsideDown:
? ? ? ? {
? ? ? ? ? ??self.frame?=?CGRectMake(window.center.x-imSize.width/2, window.center.y-imSize.height/2, imSize.width, imSize.height);? ? ? ?
?layoutSubviews];
}
?
这样子就可以不用传递任何参数,直接显示在屏幕中间了。
?