我想做一些自定义警报视图-基本上相同的功能,但不同的外观。据我所知,UIAlertView正在一个单独的窗口中显示。我可以创建一个窗口,将视图放入其中并显示它,但是如果没有对UIWindow对象的强引用,它就会在函数返回后消失。另一方面,可能没有对UIAlertView的强烈引用,但它不会在显示之后消失。如何在警报窗口中实现相同的行为?
// create a new window
UIWindow *alertWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
alertWindow.windowLevel = UIWindowLevelAlert;
UIToolbar *background = [[UIToolbar alloc] initWithFrame:alertWindow.frame];
background.barStyle = UIBarStyleBlack;
background.translucent = YES;
[alertWindow addSubview:background];
[alertWindow addSubview:contentView];
[alertWindow makeKeyAndVisible];发布于 2015-01-12 23:15:34
你真的能看到这个alertWindow吗?因为我不能在屏幕上看到它,除非我在当前的[self.view addSubview:alertWindow];上也调用了ViewController。
第二件事:,如果您需要与UIAlertView相同的功能,只需子类它。
第三件事:如果您需要更多可自定义的UIAlertView,则使用,而不是使用自定义UIView进行定制。您可以使用委托或如果愿意的话,在任何UIViewController上显示此警报,或者使用NSNotificationCenter。
发布于 2015-01-13 00:41:46
我可以创建一个窗口,将视图放入其中并显示它,但是如果没有对UIWindow对象的强引用,它就会在函数返回后消失。
你或多或少地回答你自己的问题。确保有一个强有力的引用窗口。
UIAlertView的内部结构是相当复杂的,但是有一个单独的人可以同时保存警报和窗口,每一个警报都会产生对该单例的调用,所以您也可以这样做。
https://stackoverflow.com/questions/27911398
复制相似问题