为什么尽管使用`insertSubview:belowSubview:`我的视图是否仍然出现在另一个上面?

时间:2013-11-01 23:27:08

标签: ios objective-c uiview core-animation

在我的故事板上,我添加了一个点击图标作为UIImageView,在代码中我通过创建圆形视图并放大和淡化它们来实现脉动并添加“波纹”效果。我在viewDidLoad中使用insertSubview:belowSubview:添加了这些圈子视图,但无论出于何种原因,它们仍然显示在顶部。这是为什么?

这是我正在使用的代码:

// For the tap animation at the top
UIView *topTapRipple1 = [[UIView alloc] initWithFrame:(CGRectMake(157, 50, 13.0, 13.0))];
topTapRipple1.backgroundColor = [UIColor clearColor];
topTapRipple1.layer.cornerRadius = topTapRipple1.bounds.size.height/2;
topTapRipple1.layer.borderColor = [UIColor colorWithRed:0.886 green:0.886 blue:0.886 alpha:1].CGColor;
topTapRipple1.layer.borderWidth = 1.0;
[self.view insertSubview:topTapRipple1 belowSubview:self.middle];

UIView *topTapRipple2 = [[UIView alloc] initWithFrame:(CGRectMake(157, 50, 13.0, 13.0))];
topTapRipple2.backgroundColor = [UIColor clearColor];
topTapRipple2.layer.cornerRadius = topTapRipple2.bounds.size.height/2;
topTapRipple2.layer.borderColor = [UIColor colorWithRed:0.886 green:0.886 blue:0.886 alpha:1].CGColor;
topTapRipple2.layer.borderWidth = 1.0;
[self.view insertSubview:topTapRipple2 belowSubview:self.middle];

因为您可以看到我在self.middle视图下面添加了UImageView的视图。

我希望涟漪从它背后开始,但它看起来仍然如此:

enter image description here

当图像看起来像这样时,您可以看到图像顶部的圆圈:

enter image description here

包含问题的示例项目:http://cl.ly/2v2G053t3t0z

1 个答案:

答案 0 :(得分:3)

问题在于您将topTapRipple1和topTapRipple2添加到self.view而不是self.topView(这是self.middle的超级视图)。改变它,并将它们的原点改为(73,30),它将从后面出现。