问题是界面构建器上的不透明

时间:2011-09-11 03:12:34

标签: iphone objective-c interface-builder

我在学习iOS编程。但我有一个问题,这是不透明的。

现在假设。我有两个图像视图。

当我编写代码时,它可以工作。代码在这里。

UIImageView *imageView1 = [[UIImageView alloc] initWithImage:@"something1"];
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:@"something2"];
imageView2.opaque = NO;
[controller addSubView:imageView1];
[controller addSubView:imageView2];

现在,imageView2位于imageView1上。但imageView2的属性opaque设置为NO。

所以我只能看到imageView1。好。这就是我想要的。

但我想更轻松地做。所以我使用界面构建器。

我有两个图像视图。一个是连线IBOutlet ImageView * imageView1

另一个是IBOutlet ImageView * imageView2。

我设置了imageView2的检查器。并取消选中不透明。

我构建它。所以我认为它与上面的代码效果相同。

但imageView2位于imageView1上。

它不会消失。

为什么会这样?

为什么代码可以工作但接口构建器不行?

2 个答案:

答案 0 :(得分:2)

UIView的opaque属性用于确定视图是否可以优化合成操作。你应该设置alpha属性。

答案 1 :(得分:1)

代码中添加的子视图将按您调用addSubview的顺序放在彼此的顶部。要在特定的Z位置添加子视图,请使用insertSubview: atIndex:

在界面构建器中,您必须使用菜单(发送到后面等)手动控制分层,否则最后添加的视图将位于顶部。

如果您希望视图完全遮盖下方的视图,则opaque设置应设置为YES。如果您希望下方的视图显示,请将opaque设置为NO并根据需要设置Alpha(透明度)。