我有一个UIView,我想画一个延伸超过UIView框架的圆圈,我已经将masksToBounds设置为NO - 期望我可以在UIView的边界之外画出5个像素的右边和底部.
我希望椭圆不会被剪裁但是它会被修剪掉并且不会超出边界?
- (void)drawRect:(CGRect)rect
{
int width = self.bounds.size.width;
int height = self.bounds.size.height;
self.layer.masksToBounds = NO;
//// Rounded Rectangle Drawing
//// Oval Drawing
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(0, 0, width+5, height+5)];
[[UIColor magentaColor] setFill];
[ovalPath fill];
[[UIColor blackColor] setStroke];
ovalPath.lineWidth = 1;
[ovalPath stroke];
}
Run Code Online (Sandbox Code Playgroud)
esc*_*ord 19
在调用drawRect:方法之前,UIView和NSView会自动配置视图的绘图环境.(在AppKit框架中,配置绘图环境称为锁定焦点.)作为此配置的一部分,视图类为当前绘图环境创建图形上下文.
此图形上下文是Quartz对象(CGContext),其中包含绘图系统所需的信息,例如要应用的颜色,绘图模式(笔触或填充),线宽和样式信息,字体信息和合成选项.(在AppKit中,NSGraphicsContext类的对象包装CGContext对象.)图形上下文对象与窗口,位图,PDF文件或其他输出设备相关联,并维护有关该实体的绘图环境的当前状态的信息.视图使用与视图窗口关联的图形上下文绘制.对于视图,图形上下文将默认剪切区域设置为与视图的边界重合,并将默认绘图原点放在视图边界的原点.
设置剪切区域后,您只能将其缩小.所以,在UIView drawRect中,你想要做的事情是不可能的:
归档时间: |
|
查看次数: |
5705 次 |
最近记录: |