UIViewの透過(見た目とイベント)

表示上の透過
方法1 alphaを0にする

view.alpha = 0;

これで透明になりますが、これではviewの上にのせた他のSubviewたちも表示されません。

方法2 背景色をクリアにする

view.backgroundcolor = [UIColor clearColor];

これで背景のみが透過されます。

イベントの透過
方法1 isUserInteractionEnabledを設定する

view. isUserInteractionEnabled = NO;

これでview に対してのイベントが透過されますが、subviewについても反応しなくなります。

方法2 hitTestをオーバーライド

こんな感じ


- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView* view= [super hitTest:point withEvent:event];
    if(view==self){
         return nil;
    }
    return view;
}

hitTestでnilを返すと後ろのviewへイベントが透過されます。
これを使うと、状況によってイベントの発生状況をコントロールする事が可能となります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です