35

現在、色を設定したGAグラデーションレイヤーがありますが、カラーポイントを(中央上部ではなく左上に)、下部を(中央下部から右下ではなく)に設定したいと思います) 物事を少し変更するだけです。考え?以下は、これまでに取得したコードです...色間のアニメーションであるため、コアアニメーションを含めました。

- (id)init {
    self = [super init];

    UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.w, self.h)];
    [self addSubview:gradientView];
    [self sendSubviewToBack:gradientView];

    topColor = [UIColor colorWithRed:0.012 green:0.012 blue:0.012 alpha:1];
    bottomColor = [UIColor colorWithRed:1.000 green:0.765 blue:0.235 alpha:1];

    gradient = [CAGradientLayer layer];
    gradient.frame = gradientView.frame;
    gradient.colors = [NSArray arrayWithObjects:(id)topColor.CGColor, (id)bottomColor.CGColor, nil];
    gradient.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.7], nil];
    [gradientView.layer addSublayer:gradient];

    [self performSelector:@selector(animateColors) withObject:self afterDelay:2.0];
    currentColorCount = 1;
    return self;
}

右に (私が持っているもの) 左に (私が欲しいもの)

右に (私が持っているもの) 左に (私が欲しいもの)

4

1 に答える 1

118

aのstartPointおよびendPointプロパティはCAGradientLayer、「単位座標系」で定義されます。単位座標系:

  • (0,0)レイヤーの境界矩形の最小座標に対応します。これは、レイヤーが変換されていない限り、iOS では左上隅です。
  • (1,1)レイヤーの境界矩形の最大座標に対応します。これは、レイヤーが変換されていない限り、iOS では右下隅です。

したがって、グラデーションを希望どおりに配置するのは、次のように簡単です。

gradient.startPoint = CGPoint.zero
gradient.endPoint = CGPoint(x: 1, y: 1)
于 2013-12-04T23:00:09.180 に答える