I thought from some point on for OS X, and always true for iOS, that content can appear outside of the view's bounds? (for UIView) But if I create a brand new Single View app, and created a MyView class that subclasses UIView, and implement its 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));
}
I use both UI and CG to draw a rectangle each, just in case one works and the other doesn't. And the view is added in viewDidAppear
:
- (void)viewDidAppear:(BOOL)animated {
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 260, 260)];
[self.view addSubview:myView];
}
But no matter what, the colored box won't go beyond the (20, 20, 260, 260)
region. Is it true that only the CALayers can be freely added and appear outside of a view's bounds? Can it be because of the graphics context is limited to this (20, 20, 260, 260)
to begin with? If so, is there a way to make drawRect
content appear outside of the view's bound, in all four top, down, left, right directions?
addSubview
to add toself.scrollView
. This is because I can't simply draw the borders on a scrollView, or else they will scroll away. This can be complicated, and I thought, why not just subclass UIScrollView, and in drawRect, draw outside the bounds? Then I don't have to override so many methods. – nonopolarity[aScrollView addSubview: v]
is actually adding to another UIView object which is a property of UIScrollView, so UIScrollView's drawRect actually is not drawing into that subview and so there is no problem? – nonopolarityinitWithFrame
, create a bitmap context, draw a good "background border image", get the cgImage, and add as a sublayer to the view's layer? By the way I tried subclassing UIScrollView and use drawRect to draw the borders and they won't be scrolled away) – nonopolarity