С какой-то точки зрения я подумал о OS X и всегда верен для iOS, что контент может появляться за пределами границ представления? (для UIView) Но если я создаю совершенно новое приложение Single View и создаю класс MyView, который подклассифицирует UIView и реализует его 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
отображаться вне рамки просмотра во всех четырех верхних, нижних, левых, правых направлениях?