Pragmatic ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

半透明のviewを重ねる

半透明のviewの上にviewを以下のように重ねると
子のviewのalphaも親のalphaに引きづられてしまい、子のviewのalphaを1.0に設定してもどちらも半透明になってしまう。


    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100,100)];
    view.alpha = 0.5;
    [self.navigationController.view addSubview:view];
    
    UIView* childView = [[UIView alloc] initWithFrame:CGRectMake(25, 25, 50,50)];
    childView.backgroundColor = [UIColor whiteColor];
    childView.alpha = 1.0;

これを解決するにはviewではなく、background colorのUIColorのalphaを変える必要がある。

    UIView* view = [[UIView allocinitWithFrame:CGRectMake(00, 100,100)];
    view.backgroundColor = [[UIColor blackColorcolorWithAlphaComponent:0.5];
    [self.navigationController.view addSubview:view];
    
    UIView* childView = [[UIView allocinitWithFrame:CGRectMake(252550,50)];
    childView.backgroundColor = [UIColor whiteColor];