MKMapViewの上に重ねることができるラベルが付いた単純なグラデーションを作成しようとしています。SO を調べたところ、UIView で drawRect をオーバーライドするのではなく、CAGradientLayer を使用できることがわかりました。やってみようと思いました。私のviewDidLoadでは、これを行います:
CGRect frame = CGRectMake(self.mapView.frame.origin.x, self.mapView.frame.origin.y, 320.0, 44.0);
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = frame;
gradientLayer.backgroundColor = (__bridge CGColorRef)((__bridge id)([UIColor clearColor].CGColor));
[gradientLayer setCornerRadius:12.0];
[gradientLayer setOpacity:0.5];
gradientLayer.colors = @[(id)[UIColor blackColor].CGColor, (id)[UIColor whiteColor].CGColor];
[self.view.layer addSublayer:gradientLayer];
左上隅と右上隅の下にこの白い部分があることを除いて、それは正しい道にあります。これには理由がありますか?UIViewsで以前に起こったので、レイヤーのbackgroundColorなどを設定しなかったためだと思いましたが、そうではないようです。
ありがとう!