所以我读过this post
但它似乎没有处理使背景不是半透明的问题。我希望菜单背后的内容清晰可见。这甚至可能吗?
这就是我目前的
WPSActionSheet *actionSheet = [[WPSActionSheet alloc] initWithCompletion:completion];
[actionSheet setTitle:@""];
[actionSheet addButtonWithTitle:@"Take Photo"];
[actionSheet addButtonWithTitle:@"Choose from Library"];
[actionSheet addButtonWithTitle:@"Skip This Step"];
[actionSheet setCancelButtonIndex:2];
[actionSheet showInView:[self view]];
显示了这个
答案 0 :(得分:1)
UIActionSheet
将始终显示“有色背景”。没有办法解决这个问题。但是,您可以使用UIActionSheet
创建自己的UIView
版本。
答案 1 :(得分:1)
使用委托方法 -
设置UIActionSheet的alpha和opaque属性(void)willPresentActionSheet:(UIActionSheet *)actionSheet
,它会随你所见。
答案 2 :(得分:0)
如果您想让UIActionSheet的背景透明,您可以将其子类化并更改layoutSubviews
- (void)layoutSubviews
{
[super layoutSubviews];
UIImage* image;
CGSize size = self.frame.size;
UIGraphicsBeginImageContext(size);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[self layer] setContents:(id)image.CGImage];
}
要添加一些自定义背景,只需将以下代码添加到layoutSubviews:
CGRect frame = self.frame;
frame.origin = CGPointZero;
UIImageView* bg = [[UIImageView alloc] initWithFrame:frame];
bg.image = [UIImage imageNamed@"YOUR/IMAGE/NAME"];
[self addSubview:bg];
[self sendSubviewToBack:bg];
您也可以在委托方法
中执行所有这些操作- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
只需将自我替换为 actionSheet 。
答案 3 :(得分:0)
我遇到了同样的问题并找到了解决方法。 UIActionSheet
的超级视图包含用于着色的UIView
。因此,您可以通过将此视图图层的不透明度设置为0来删除着色。
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
NSArray *subviews = actionSheet.superview.subviews;
UIView *tintView = [subviews objectAtIndex:0];
[tintView.layer setOpacity:0.0];
}