在 iPad 上呈现模态表单视图控制器时,未被表单占据的屏幕的其余部分会变暗(但保持透明)。有没有办法让它一直变暗到黑色(即变得不透明)?
谢谢。
在 iPad 上呈现模态表单视图控制器时,未被表单占据的屏幕的其余部分会变暗(但保持透明)。有没有办法让它一直变暗到黑色(即变得不透明)?
谢谢。
不,dim 总是带有 alpha,要做你需要的,你必须实现你自己的模态转换表
您可以使用图像来做到这一点:
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
UIImage *backgroundImage = [UIImage imageNamed:@"testimage.png"];
backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:20 topCapHeight:40];
CGSize theSize = actionSheet.frame.size;
// draw the background image and replace layer content
UIGraphicsBeginImageContext(theSize);
[theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];
theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[actionSheet layer] setContents:(id)backgroundImage.CGImage];
}
或者这样做:
CGSize mySize = myActionSheet.bounds.size;
CGRect myRect = CGRectMake(0, 0, mySize.x, mySize.y);
UIImageView *blackView = [[[UIImageView alloc] initWithFrame:myRect] autorelease];
[redView setBackgroundColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]];
[self.view insertSubview:blackView atIndex:0];
您还可以更改 actionSheetStyle
MyActionSheet.actionSheetStyle=UIActionSheetStyleBlackOpaque;
MyActionSheet.actionSheetStyle=UIActionSheetStyleBlackTranslucent;
考虑到似乎没有一个漂亮的解决方案,可以通过在 prepareForSegue() 中的 presentingViewController 顶部插入一个黑色背景的子视图来完成简单的 hack。然后在您关闭表单之前,获取presentingViewController(self.presentingViewController)并删除添加的视图。