这是我的问题:我试图显示带有子视图的UIWindow,该子视图显示径向渐变。我想将窗口放在UIWindowLevelAlert上。我之前已经弄清了所有这些内容,并且可以正常工作,但是现在我想重现它浪费的时间...
这是我得到的代码(背景不是渐变,因为我想保持它简单,然后添加一个真正类似于UIAlertView的视图):
- (IBAction)buttonPressed {
UIWindow *backgroundWindow = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
backgroundWindow.windowLevel = UIWindowLevelAlert;
UIView *backgroundView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
backgroundView.backgroundColor = [UIColor blackColor];
backgroundView.alpha = 0.5;
[backgroundWindow makeKeyAndVisible];
[backgroundWindow addSubview:backgroundView];
backgroundWindow.hidden = NO;
}
最佳答案
取消分配UIWindow后,会将其从屏幕上删除。由于您没有保留对UIWindow的引用,因此我相信它会被释放和取消分配,因此不会显示。
解决方案是在某个地方保留对窗口的引用。您可以将它作为属性存储在您正在工作的 class 中吗?
关于objective-c - 如何显示基于UIWindow的灰色背景(如UIAlertView)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11874570/