【发布时间】:2014-06-23 01:30:44
【问题描述】:
我有一个 UIView 是用以下方式绘制的:
- (void)drawRect:(CGRect)rect
{
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, self.widthOfLine, self.heightOfLine)];
[bezierPath fill];
}
并且其框架在 iOS 窗口中居中。我想在这个视图中随机放置一堆较小的(5px x 5px)视图,我使用 arc4random() 函数并绘制视图做得很好。但是,我似乎无法弄清楚如何切断 bezierPathWithOvalInRect 之外的所有视图,它只会在第一个 UIView 框架中的任何地方显示它们。有人知道该怎么做吗?
编辑:
为清楚起见,我将另一种视图定义为:
- (void)drawRect:(CGRect)rect
{
UIBezierPath *drawPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(self.xPosition, self.yPosition, self.width, self.width)];
[[UIColor whiteColor] setFill];
[drawPath fill];
}
我将其中的大量作为子视图添加到第一个视图中,但我希望它们不会显示在椭圆形贝塞尔路径之外。有没有办法 a) 只将它们添加到椭圆形贝塞尔路径中而不是整个框架中,或者 b) 有一种方法可以从视图中剪掉椭圆形之外的所有内容?
【问题讨论】:
-
Cocoa 与 UIView 和 UIBezierPath 有什么关系?
-
UIBezierPath 是由 CoreGraphics 和 Foundation 构建的,它们被认为是 Cocoa 框架的一部分?
-
@orange 我认为 El Tomato 指的是 Cocoa 在 OS X 上,而 Cocoa Touch 在 iOS 上。
标签: objective-c cocoa-touch uiview uibezierpath