如何在scrollView中使用CAShapeLayer

时间:2016-03-04 13:48:00

标签: ios objective-c uiscrollview

我在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.boundsframe.size.height * 0.5f,则图层保持不变 - 不会滚动。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请注意,像这样的设置框架将不再适用于不同尺寸的iPhone,我强烈建议使用Autolayout。

首先,您需要在UIScrollView内添加形状图层。您的contentSize基本上是您可以放置​​形状的地方。

您不应修改视图控制器高度。应设置滚动视图大小(如果scrollview为全屏),与ViewController的大小相同。然后将Y_seeBellow的贝塞尔曲线路径添加到值self.view.frame.size.height+radius/2

然后,您的形状将首先位于scrollview可见部分底部的正下方。