我曾经认为,从某个时间点开始对于 OS X 平台来说,对于 iOS 平台则一直如此,视图内容可以出现在视图范围之外?(对于 UIView 来说)但是,如果我创建一个全新的 Single View 应用程序,并且创建了一个子类化 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)
的区域。 是否只有CALayer可以自由添加并出现在视图的边界之外? 这是因为图形上下文一开始就被限制在这个(20, 20, 260, 260)
吗? 如果是这样,是否有一种方法让drawRect
内容在视图的边界之外的所有四个方向上都显示出来?
addSubview
以添加到self.scrollView
。这是因为我不能简单地在scrollView上绘制边框,否则它们会滚动消失。这可能会很复杂,我想,为什么不直接子类化UIScrollView,在drawRect中绘制超出边界的部分呢?然后我就不必重写那么多方法了。 - nonopolarity