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スーパービューには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 に答える
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

selfactionSheetに置き換えるだけです。

于 2012-12-28T14:36:48.857 に答える