Apple Interface Builder:将子视图添加到UIImageView

kpo*_*wer 54 interface-builder subview uiimageview addsubview

我是UIImageView在Interface Bulder的帮助下创建的.现在我想在其中放置标签(作为其子视图).在代码中,我可以键入类似的内容:[myUIImageView addSubview:myUILabel];但是我可以在IB的帮助下完成吗?我找到了解决方案UIView,但找不到类似的东西UIImageView.

Raj*_*dal 112

您无法在界面构建器中向UIImageView添加子视图,原因仅为Apple所知!你说你可以通过编程方式添加子视图是正确的,但是,设置自动调整掩码和子视图放置的开销都应该在代码中处理,这很麻烦.

所以有一个简单的解决方法.不要在nib中拖动UIImageView的实例,只需拖动UIView并将其类从UIView(检查器的cmd + 4选项)更改为UIImageView.您在nib中为默认的imageView实例和新的UIImageView子类实例找到的唯一区别是:您无法从nib(cmd + 1选项)将图像设置为新的imageView.因此,在-viewDidLoad其相应的viewController方法中,将image设置为UIImageView的这个出口.

通过这样做,您可以自由地将子视图添加到界面构建器中的"now UIImageView"实例,这非常简单.

希望这可以帮助 ...

  • 然后,最好创建一个UIView,将UIImageView作为子视图覆盖其所有大小,并将子视图添加到UIView. (7认同)
  • @Raj没有性能问题.视图层次结构可以处理数百个子层.当然你需要设置自动调整掩码,但我不认为这是一个问题.您始终必须设置自动调整大小.最底层的观点也不是问题!请注意,它仍然比创建IBOutlets和在代码中设置UI更好. (6认同)

use*_*951 12

我想补充一下答案.

虽然它很糟糕,你不能添加子视图UIImageView,你可以通过结合UIView透明(清晰的颜色)背景获得相同的效果.

然后把UIImageview它放在前面.

所以UIView有子视图和UIImageview背景UIView.

我认为那是苹果的意图.

这是一个截图:

在此输入图像描述

结果如下:

在此输入图像描述

不要忘记将背景设置为清晰的颜色

在此输入图像描述

现在,如果有人能够实际指向我的教程如何做到这一点,那就太好了.我花了几个小时做了检查回答的方式.选中的答案是一个很好的答案,但非常不直观,因为你在工作时无法清楚地看到你的背景图像.我认为我的方法是正确的.

  • 真的问题是:我可以用IB添加UIImageView的直接子视图吗?答案是否定的.这就是它被标记为正确的原因.我的意思是,我知道你的两个"替换",并且对"以任何方式做到这一点"感兴趣,但是对于这个特殊的可能性.但你的想法要好得多,所以upvote! (2认同)
  • 啊啊,它并没有完全回答你的问题.但它似乎应该是这样的方式.感谢upvote. (2认同)