2017-05-02 9 views
0

以下のコードを使用して、私のビューのグラデーションの背景色を設定しました。iOS CAGradientLayerが一部の色で動作しない

CAGradientLayer *gradient = [CAGradientLayer layer]; 
    gradient.frame = self.view.bounds; 
    gradient.colors = @[(id)[UIColor colorWithRed:44/255 green:58/255 blue:76/255 alpha:1].CGColor, (id)[UIColor colorWithRed:17/255 green:22/255 blue:30/255 alpha:1].CGColor]; 
    [self.view.layer insertSublayer:gradient atIndex:0]; 

しかし、機能しません。画面は黒色で表示されます。私は

gradient.colors = @[(id)[UIColor blueColor].CGColor, (id)[UIColor redColor].CGColor]; 

以下、それが働いてfine.Iのような色を設定しようとする。しかし、正しい出力を取得しています。グラデーションカラーがUIColor colorWithRed関数で動作しない理由を誰にでも助けてくれますか?

ありがとうございます。

答えて

1

これを試してみてください:

CAGradientLayer *gradient = [CAGradientLayer layer]; 
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:202.0/255.0 green:107.0/255.0 blue:122.0/255.0 alpha:1] CGColor], (id)[[UIColor colorWithRed:192.0/255.0 green:144.0/255.0 blue:120.0/255.0 alpha:1] CGColor], nil]; 
gradient.frame = self.view.bounds; 
[self.view.layer insertSublayer:gradient atIndex:0]; 
1

このようにしてください!

-(CAGradientLayer *)makeGradientView :(UIColor *)topColor BottomColor:(UIColor *)bottomColor withFrame:(CGRect)rect 
{ 
    CAGradientLayer *theViewGradient = [CAGradientLayer layer]; 
    NSArray *gradientLocations = [NSArray arrayWithObjects:[NSNumber numberWithInt:0.0],[NSNumber numberWithInt:1.0], nil]; 
    theViewGradient.locations = gradientLocations; 
    theViewGradient.colors = [NSArray arrayWithObjects: (id)topColor.CGColor,(id)bottomColor.CGColor,(id)bottomColor.CGColor,(id)bottomColor.CGColor, (id)bottomColor.CGColor, nil]; 
    theViewGradient.frame = rect; 
    theViewGradient.startPoint = CGPointMake(1,1); 
    theViewGradient.endPoint = CGPointMake(1.0,0.1); 
    return theViewGradient; 
} 

このように使用できます。

@property (weak, nonatomic) IBOutlet UIView *mainView; 
CAGradientLayer *theViewGradient = [self makeGradientView:[UIColor colorWithRed:189/255.0 green:227/255.0 blue:106/255.0 alpha:0.5] BottomColor:[UIColor colorWithRed:13/255.0 green:184/255.0 blue:196/255.0 alpha:0.5] withFrame:self.view.bounds]; 
[_mainView.layer addSublayer:theViewGradient]; 
2

を動作するように元のポスターのコードでは、彼はただではない結果がint型に切り捨てられた場合、255.0の代わりに、255で各色成分を分割する必要があります。

また
CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = self.view.bounds; 
gradient.colors = @[(id)[UIColor colorWithRed:44/255.0 green:58/255.0 blue:76/255.0 alpha:1].CGColor, (id)[UIColor colorWithRed:17/255.0 green:22/255.0 blue:30/255.0 alpha:1].CGColor]; 
[self.view.layer insertSublayer:gradient atIndex:0]; 

、float値の配当を行います

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = self.view.bounds; 
gradient.colors = @[(id)[UIColor colorWithRed:44.0/255 green:58.0/255 blue:76.0/255 alpha:1].CGColor, (id)[UIColor colorWithRed:17.0/255 green:22.0/255 blue:30.0/255 alpha:1].CGColor]; 
[self.view.layer insertSublayer:gradient atIndex:0]; 

または部門の両方の数値float値行い、解決策に従うことを最も簡単:

CAGradientLayer *gradient = [CAGradientLayer layer]; 
gradient.frame = self.view.bounds; 
gradient.colors = @[(id)[UIColor colorWithRed:44.0/255.0 green:58.0/255.0 blue:76.0/255.0 alpha:1].CGColor, (id)[UIColor colorWithRed:17.0/255.0 green:22.0/255.0 blue:30.0/255.0 alpha:1].CGColor]; 
[self.view.layer insertSublayer:gradient atIndex:0]; 
関連する問題