1

所以我读过这篇文章

但它似乎没有解决使背景不着色为半透明的问题。我希望带有按钮的菜单后面的内容清晰可见。这甚至可能吗?

这是我目前拥有的

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]];

这表明了这一点

在此处输入图像描述

4

4 回答 4

1

UIActionSheet将始终显示“有色背景”。没有办法解决这个问题。但是,您可以UIActionSheet使用UIView.

于 2012-07-13T19:55:03.603 回答
1

只需使用委托方法设置 UIActionSheet 的 alpha 和 opaque 属性 -

(void)willPresentActionSheet:(UIActionSheet *)actionSheet

它会随心所欲地显示出来。

于 2012-12-10T14:24:21.727 回答
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

只需将self替换为actionSheet

于 2012-12-28T14:36:48.857 回答
0

我遇到了同样的问题并找到了解决方法。的UIActionSheet超级视图包含一个UIView用于着色的。因此,您可以通过将此视图图层的不透明度设置为 0 来移除着色。

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
    NSArray *subviews = actionSheet.superview.subviews;
    UIView *tintView = [subviews objectAtIndex:0];
    [tintView.layer setOpacity:0.0];
}
于 2014-01-22T15:03:10.140 回答