我在scrollView
里面创建了一个新的CAShapeLayer
。我希望myCAShapeLayer
在屏幕外初始化,所以我必须向下滚动才能看到它。
这是在我的滚动屏幕 viewControler.m 文件中:
[myScrollScreen setScrollEnabled:YES];
[myScrollScreen setContentSize:CGSizeMake(320, 1000)];
[myScrollScreen setFrame:CGRectMake(0, 0, 320, 568)];
// the view controller size is also set to freeform 320,1000
CAShapeLayer* myLayer;
myLayer = [[CAShapeLayer alloc] init];
CGPoint myCenter = CGPointMake(someX, Y_seeBellow);
myLayer.path = [UIBezierPath bezierPathWithArcCenter:myCenter radius:50 startAngle:-(M_PI/2.0) endAngle:3.0*M_PI/2.0 clockwise:YES].CGPath;
现在如果我将Y设置为viewControler height * 0.5f
- 我可以在屏幕中间看到myLayer
。如果我将Y设置为viewController height * 1.2f
- 当我向下滚动时我无法看到myLayer
(其他类似按钮的东西,我可以通过这种方式看到)。如果我将Y设置为myScrollView.bounds
或frame.size.height * 0.5f
,则图层保持不变 - 不会滚动。有什么想法吗?
答案 0 :(得分:0)
请注意,像这样的设置框架将不再适用于不同尺寸的iPhone,我强烈建议使用Autolayout。
首先,您需要在UIScrollView
内添加形状图层。您的contentSize
基本上是您可以放置形状的地方。
您不应修改视图控制器高度。应设置滚动视图大小(如果scrollview为全屏),与ViewController的大小相同。然后将Y_seeBellow
的贝塞尔曲线路径添加到值self.view.frame.size.height+radius/2
。
然后,您的形状将首先位于scrollview可见部分底部的正下方。