1

アプリでは UINavigationBar をサブクラス化し、TitleView として (View Controller で) カスタム UIView を設定しています

[self.playButton setBackgroundColor:[UIColor yellowColor]];
[self.navigationItem setTitleView:self.playButton];

このビュー (playButton) の下端は湾曲している必要があります。コーナーだけでなく、下端全体をボットします。この効果を実現するために、次のコードを使用しています。

CAShapeLayer *maskLayer = [CAShapeLayer layer];
UIBezierPath *path = [[UIBezierPath alloc] init];

[path addCurveToPoint:CGPointMake(self.playButton.frame.size.width, self.playButton.frame.size.height)  controlPoint1:CGPointMake(0, self.playButton.frame.size.height) controlPoint2:CGPointMake(self.playButton.frame.size.width, 60)];
maskLayer.path = path.CGPath;
self.playButton.layer.mask = maskLayer;

しかし、そのコードの後、私の UIView (playButton) が消えました! UIViewの湾曲した下端を適用するこの適切な方法はありますか?

次のようになります: http://i.imgur.com/51UIQsE.png

4

2 に答える 2

0

解決:

-(void)roundCorners:(UIRectCorner)corner radius:(float)radius
{   
    _cornerRadius = radius;
    _corner = corner;
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect {
    // Drawing code
    [super drawRect:rect];

    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:_corner cornerRadii:CGSizeMake(_cornerRadius, _cornerRadius)];

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.bounds;
    maskLayer.path = maskPath.CGPath;

    self.layer.mask = maskLayer;
}
于 2015-01-28T23:05:25.467 に答える