2

UIImageViewにCAGradientLayerを追加しました。UIImageViewの自動サイズ変更マスクを、境界全体で柔軟になるように設定しました(柔軟な高さ、幅など)。ただし、imageViewの上に追加したグラデーションレイヤーは、UIImageViewのサイズが変更されてもサイズが変更されません。どうしてこれなの?コードは次のとおりです。

CAGradientLayer *imgOverlay = [CAGradientLayer layer];
        CGColorRef startBlueColor = [UIColor colorWithRed:23/255.f green:171/255.f 
                                                     blue:219/255.f alpha:0.8].CGColor; 
        CGColorRef endBlueColor = [UIColor colorWithRed:23/255.f green:171/255.f 
                                                   blue:219/255.f alpha:0.5].CGColor;     
        imgOverlay.colors = [NSArray arrayWithObjects:
                             (id) startBlueColor,
                             (id) endBlueColor,
                             nil];

        imgOverlay.locations = [NSArray arrayWithObjects:
                                [NSNumber numberWithFloat:0.0],
                                [NSNumber numberWithFloat:1.0],
                                nil];

        imgOverlay.startPoint = startPoint;
        imgOverlay.frame = self.backgroundImageView_.bounds;
        imgOverlay.endPoint = endPoint;
        self.imageOverlay = imgOverlay;
        [self.backgroundImageView_.layer addSublayer:self.imageOverlay];
4

1 に答える 1

8

CALayerは、iOSでの自動サイズ変更をサポートしていません。サイズ変更は、layoutSubviewsまたは適切な場所で手動で実装する必要があります。

于 2012-06-07T22:31:04.373 に答える