私はこのチュートリアルを行っていましたが、一部で必要な結果が得られませんでした。
UITableViewCell
各セルにグラデーション効果を追加したかったので、をサブクラス化し、セルを直接カスタマイズしました。基本的に、各セルの上下にグラデーション効果を加えました。
これが私がそれに使用したコードです:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// add a layer that overlays the cell adding a subtle gradient effect
gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.bounds;
gradientLayer.colors = @[(id)[[UIColor colorWithWhite:1.0f alpha:0.2f] CGColor],
(id)[[UIColor colorWithWhite:1.0f alpha:0.1f] CGColor],
(id)[[UIColor clearColor] CGColor],
(id)[[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor]];
gradientLayer.locations = @[@0.00f, @0.01f, @0.95f, @1.00f];
[self.layer insertSublayer:gradientLayer atIndex:0];
}
return self;
}
-(void) layoutSubviews{
[super layoutSubviews];
//ensure that gradient layers occupy the full bounds
gradientLayer.frame = self.bounds;
}
望ましい結果として、gradientLayer がセルの境界全体を占めるようにしたいと考えています。ただし、セルの最初と最後から 1 mm 程度しか占有しません。したがって、完全な境界を占有していません。
コメントアウトする[super layoutSubviews]
と、セルの境界全体を占める完全なグラデーションが表示されます。ただし、今回は、セル内のテキストは表示されません。
私はそれを解決できませんでした。どんな助けでも感謝します。