我想以半圆形方式裁剪viewcontroller的一部分,以便通过裁剪部分可以看到它后面的viewcontroller。有没有办法使用objective-c或任何已有的自定义控件来完成它。
具有10个单元格的TableviewContoller
一个ImageWiderContoller 大图像和其他控件
表的第一个单元格应该有一个半圆,ImageWiderContoller(在TableviewContoller下面)应该是可见的 因此,在tableview上向左滑动应该会显示imageWiderController
答案 0 :(得分:1)
我认为这样做的唯一方法就是拥有自定义UIView
并将其设置为您最常见的UIViewController
的默认视图。在UIView's
drawRect()
方法中,您可以绘制所需的任何形状(包括透明)。就像你想在你的控制器中间绘制一个透明的圆圈一样,你可以在你的UIView的drawRect()
中这样做:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor orangeColor] setFill]; //background Fill
CGContextFillRect(context, self.bounds);
[[UIColor clearColor] setFill]; //circle Fill.
CGContextFillEllipseInRect(context, (CGRect){self.center.x - 25.0f, self.center.y - 25.0f, 50.0f, 50.0f});
}
在initWithFrame:相同的UIView中添加:
[self setBackgroundColor:[UIColor clearColor]];
P.S:正如@Lefteris所提到的,显然将UIViewController
的{{1}}设置为OverCurrentContext,以便它出现在同一个控制器上。
注意:通过透明,我的意思是顶部控制器的区域,它可以根据需要显示控制器的内容。