0

在此处输入图像描述我正在开发一个应用程序,我在同一个视图中创建小的子视图。

我想要的是当我更改视图的 alpha 值时,子视图的 alpha 值也发生了我不想要的更改。

如何实现更改视图值的代码,而不是创建的小子视图。

谢谢,

4

2 回答 2

2

你不能那样做,alpha是继承的,所以你要做的就是改变视图结构

YourMainView -> 你的子视图

ContainerView ->YourMainView -> 你的子视图

所以现在 YourMain View 是你想要应用动画的那个,不是你当前 subView 的 paret 视图,两个视图都是兄弟,ContainerView 也将有一个清晰的背景,所以它不会影响它只会包含两个视图

于 2012-06-27T09:21:01.907 回答
1

正如已经建议的那样,您不应将 YourSubVew 添加为 YourMainView 的子视图。使您的两个视图成为一个空且透明的公共子视图 (ContainerView) 的子视图,该子视图与 YourMainView 当前具有相同的大小和位置。

ContainerView -> YourMainView 
              -> YourSubView

确保先将 YourMainView 添加为 ContainerView 的子视图,然后再将 YourSubView 添加为 ContainerView 的子视图。否则 YourMainView 可能会重叠/隐藏 YourSubView。

这样做你可以设置两个视图的 alpha 相互独立。

(奥马尔的回答非常正确,但他的“图形可视化”具有误导性,它错过了子视图序列的要点。)

编辑:你今天拥有的是这样的:

yourMainView.alpha = 1.0;
...
[yourMainView addSubView:yourSubView];
yourMainView.alpha = 0.1; //probably with animations etc.

发生的事情是,yourSubView 将“继承”其父视图的 alphaValue。还有更多。假设您的 subView 的 alpha 为 0.5,当其父视图的 alpha 设置为 0.1 时,它实际上会变为 0.05。

将该代码更改为:

containerView = [[UIView alloc] init]; //you may choose a different init method
//If you use initWithFrame then use the frame of yourMainView. 
//However, make sure that ContainterView is of the same size as yourMainView and has the same position. 
[containerView addSubView:yourMainView];
yourMainView.alpha = 1.0;

... [containerView addSubView:yourSubView]; //也将它添加到容器中!yourMainView.alpha = 0.1; //这现在只会影响 MainView。

这基本上就是所有技巧。视图可以很好地相互重叠而不是子视图。只有当它们真的是子视图时,才让它们成为子视图,当它们一起移动,一起出现和消失等时。

于 2012-06-27T09:33:15.330 回答