裁剪viewcontroller的一部分

时间:2015-05-18 07:31:34

标签: ios cocoa-touch core-graphics viewcontroller

我想以半圆形方式裁剪viewcontroller的一部分,以便通过裁剪部分可以看到它后面的viewcontroller。有没有办法使用objective-c或任何已有的自定义控件来完成它。

  1. 具有10个单元格的TableviewContoller

  2. 一个ImageWiderContoller     大图像和其他控件

  3. 表的第一个单元格应该有一个半圆,ImageWiderContoller(在TableviewContoller下面)应该是可见的 因此,在tableview上向左滑动应该会显示imageWiderController

1 个答案:

答案 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,以便它出现在同一个控制器上。

注意:通过透明,我的意思是顶部控制器的区域,它可以根据需要显示控制器的内容。