我在学习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上。
它不会消失。
为什么会这样?
为什么代码可以工作但接口构建器不行?
答案 0 :(得分:2)
UIView的opaque属性用于确定视图是否可以优化合成操作。你应该设置alpha属性。
答案 1 :(得分:1)
代码中添加的子视图将按您调用addSubview
的顺序放在彼此的顶部。要在特定的Z位置添加子视图,请使用insertSubview: atIndex:
。
在界面构建器中,您必须使用菜单(发送到后面等)手动控制分层,否则最后添加的视图将位于顶部。
如果您希望视图完全遮盖下方的视图,则opaque
设置应设置为YES
。如果您希望下方的视图显示,请将opaque
设置为NO
并根据需要设置Alpha(透明度)。