私がやろうとしているのは、UIBezierPath
drawRectWithRounderCorners メソッドを使用して、ビューの周りにフレームを描画することです。そこで、draw rect メソッドから rect を取得し、UIEdgesInset
負の値を持つオブジェクトを適用して、そのように描画しようとしました。これまでのところ、UIBezierPath
オブジェクトは draw rect に渡された rect の境界外に描画されていません。オブジェクトに同じ四角形を適用すると、CALayer
必要に応じてレイヤーが描画されます。UIBezierPath
では、オブジェクトと同じ長方形をオブジェクトに描画させることができないのはCALayer
なぜですか?
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:
UIEdgeInsetsInsetRect(rect, UIEdgeInsetsMake(-5,-5, -5, -5))
byRoundingCorners:UIRectCornerTopLeft|UIRectCornerBottomLeft
cornerRadii:CGSizeMake(5, 5)];
[[UIColor blueColor]setFill];
[[UIColor blueColor]setStroke];
[path stroke];
[path fill];
CALayer *backGround = [CALayer layer];
[backGround setOpacity:.2];
[backGround setFrame:UIEdgeInsetsInsetRect(rect,
UIEdgeInsetsMake(-5,-5, -5, -5))];
[backGround setBackgroundColor:[UIColor greenColor].CGColor];
[self.layer addSublayer:backGround];
}