【问题标题】:UIAlertView-like UIWindowUIAlertView-like UIWindow
【发布时间】:2015-01-12 21:55:11
【问题描述】:

我想制作某种自定义警报视图 - 功能基本相同,但外观不同。据我所知, 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];

【问题讨论】:

    标签: ios uialertview uiwindow


    【解决方案1】:

    你真的能看到这个警报窗口吗?因为我无法在屏幕上显示它,除非我在当前 ViewController 上也调用 [self.view addSubview:alertWindow];

    第二件事: 如果您需要与UIAlertView 相同的功能,只需将其子类化即可。

    第三件事: 如果您需要更多可自定义的UIAlertView,我会使用自定义UIView 并对其进行自定义。您可以在任何 UIViewController 上使用委托或如果您愿意,也可以使用 NSNotificationCenter 显示此警报。

    【讨论】:

      【解决方案2】:

      我可以创建一个窗口,将视图放入其中并显示它,但如果没有对 UIWindow 对象的强引用,它会在函数返回后立即消失。

      你或多或少地回答了你自己的问题。确保有对窗口的强引用。

      UIAlertView 的内部结构相当复杂,但是有一个单例可以同时保存警报和显示它的窗口。创建的每个警报都会调用该单例,因此您可以执行类似的操作也是。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-29
        • 1970-01-01
        相关资源
        最近更新 更多