下面是一个示例图我现在所拥有的:从UIView的删除形状创建透明度
理想情况下,我想带一个“块”出前,所以任何意见底下是现在可以通过删除区域看到(例如透明度)。
我试着建立一个路径,然后使用CGContextClip
尝试剪辑,但它似乎并没有被裁剪形状像预期。如何做到这一点的任何想法,或者即使它可能呢?
下面是一个示例图我现在所拥有的:从UIView的删除形状创建透明度
理想情况下,我想带一个“块”出前,所以任何意见底下是现在可以通过删除区域看到(例如透明度)。
我试着建立一个路径,然后使用CGContextClip
尝试剪辑,但它似乎并没有被裁剪形状像预期。如何做到这一点的任何想法,或者即使它可能呢?
通常做这样的事情,一个会使透明背景颜色的UIView,然后绘制的“背景”,通过手动CoreGraphics的。例如,为了使一种观点认为,实质上是一个带有黑色背景的圆圈,你可以做这样的事情在drawRect
方法:
- (void)drawRect:(CGRect)dirtyRect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0, 0, 0, 1);
CGContextFillElipseInRect(context, self.bounds);
}
的东西比简单的圆形更复杂,你应该结合使用CGContextBeginPath()
与CGContextMoveToPoint()
和CGContextAddLineToPoint()
功能。这将允许您使用背景所需的任何不透明形状制作透明视图。
编辑:对于重复的图案,你可以使用一个以上的呼叫CGContextDrawImage
CGContextSaveGState(context);
CGImageRef image = [[UIImage imageNamed:@"backgroundImage.png"] CGImage];
CGContextBeginPath(context);
// add your shape to the path
CGContextClipToPath(context);
CGContextDrawImage(context, self.bounds, image);
CGContextRestoreGState(context);
很明显,但是这基本上是什么需求:剪辑的背景图像有一定的路径,你可以做这样的事情要做。就像我上面所说的,你可以使用基本的线条绘制功能来为你的路径添加线条,矩形,圆圈和其他东西。
使用[的UIColor clearColor]在你V至使它透明,你可能会设置视图不透明NO为好。
看,问题是它不只是一个简单的形状。这是一个动态的'UIView',我正在设置'backgroundColor'属性(使用模式图像)。所以,我不能只是静态地画在我的'的drawRect图像:'函数在我的'UIView'子类。 –
您必须手动绘制背景图片使用剪裁。看我的编辑。 –
是啊,我只是想避免这种情况,因为它是相当多的难以管理。哦,看起来这是唯一的方法。谢谢... –