我从某些时候开始认为对于 OS X,对于 iOS 来说总是如此,内容可以出现在视图边界之外?(对于 UIView)但是如果我创建一个全新的单视图应用程序,并创建一个子类 UIView 的 MyView 类,并实现它的 drawRect:
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIBezierPath *path = [UIBezierPath bezierPathWithRect:
CGRectMake(-20, -20, 600, 600)];
[[UIColor greenColor] set];
[path fill];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextFillRect(context, CGRectMake(-20, -20, 600, 600));
}
我同时使用 UI 和 CG 来分别绘制一个矩形,以防一个有效而另一个无效。视图被添加到viewDidAppear
:
- (void)viewDidAppear:(BOOL)animated {
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 260, 260)];
[self.view addSubview:myView];
}
但无论如何,彩盒不会超出(20, 20, 260, 260)
区域。只有 CALayers 可以自由添加并出现在视图边界之外,这是真的吗?可能是因为图形上下文仅限于此(20, 20, 260, 260)
开始吗?如果是这样,有没有办法让drawRect
内容出现在视图边界之外,在所有四个上、下、左、右方向上?