我是UIImageView
在 Interface Bulder 的帮助下创建的。现在我想在其中放置标签(作为它的子视图)。在代码中,我可以输入如下内容:[myUIImageView addSubview:myUILabel];
但是我可以在 IB 的帮助下完成吗?我找到了 的解决方案UIView
,但找不到类似的东西UIImageView
。
4 回答
由于只有 Apple 知道的原因,您无法在界面生成器中向 UIImageView 添加子视图!您说得对,您可以通过编程方式 addSubview,但是,设置自动调整大小掩码和子视图放置的开销都应该在代码中处理,这很麻烦。
所以有一个简单的解决方法。无需在笔尖中拖动 UIImageView 的实例,只需拖动 UIView 并将其类从 UIView 更改为 UIImageView(检查器的 cmd+4 选项)。您在默认 imageView 实例和新 UIImageView 子类实例的 nib 中发现的唯一区别是:您不能从 nib(cmd+1 选项)将图像设置为新的 imageView。所以,在-viewDidLoad
其对应的viewController的方法中,将image设置为UIImageView的这个outlet。
通过这样做,您可以在界面构建器中自由地将子视图添加到“现在的 UIImageView”实例,这非常容易。
希望这可以帮助 。. .
我想补充答案。
虽然很糟糕,您无法将子视图添加到,但您可以通过合并透明(清晰的颜色)背景UIImageView
来获得相同的效果。UIView
然后把UIImageview
它放在前面。
所以UIView
有子视图,UIImageview
是 的背景UIView
。
我认为这是苹果的意图。
这是一个屏幕截图:
结果如下:
不要忘记将背景设置为清晰的颜色
现在,如果有人真的可以向我指出如何做到这一点的教程,那就太好了。我花了几个小时以检查答案的方式进行操作。检查的答案是一个很好的答案,但非常不直观,因为您在工作时无法清楚地看到您的背景图像。我认为我的方法是正确的。
在最新的 XCode(4.5) 中,有一个选项可以将所需的控件拖放到父级。
这很容易。附上相同的屏幕截图。我将 Label/TextField 和 Button 拖到 UIImageView
使用此代码:
UIImage *image = [UIImage imageNamed:@"background.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view insertSubview:imageView atIndex:0];
(将background.png 替换为 image)(将atIndex:0替换为 .index 根目录中您要插入图像和关闭的任何位置。