addSubview不起作用

时间:2013-08-05 18:54:11

标签: iphone addsubview

我将使用addSubview为图像添加标签,但这不起作用。

这里是代码:

.h
    UIImageView *bgimage;
    IBOutet UILabel *loadingLabel;


.m
    loadingLabel.text =@"......";
    bgimage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    bgimage.image = [UIImage imageNamed:@"Wait.png"];
    [self.view addSubview:bgimage];
    [bgimage addSubview:loadingLabel];

截图:

Screenshot

“Tisch wird reserviert ......”是loading标签,并且是UiImage中的标签

Screenshot 2

这是带有第二个答案的代码的“布局”

2 个答案:

答案 0 :(得分:3)

将您的代码更改为...

·H

IBOutet UIImageView *bgimage;
UILabel *loadingLabel;

的.m

bgimage.image = [UIImage imageNamed:@"Wait.png"];
loadingLabel = [[UILabel alloc] init];
loadingLabel.frame = CGRectMake(0, 0, 100, 50);
loadingLabel.text = @"testing";
[bgimage addSubview:loadingLabel];

它会起作用。

答案 1 :(得分:2)

您无法将子视图添加到uiimageview,因为drawRect:永远不会被调用。 资源: “UIImageView类已经过优化,可以将图像绘制到显示器上。 UIImageView不会调用子类的drawRect:方法。如果您的子类需要自定义绘图代码,建议您使用UIView作为基类。“来自apple docs:https://www.google.de/#bav=on.2,or.r_qf.&fp=90e2434f04e1ee9b&q=uiimageview+class+reference&safe=off

解决方案: 如建议的那样,使用uiview包含标签和imageview,然后使用UIView的-bringSubviewtoFront:将标签置于顶部。您还可以使用UIViews backgroundimage来显示图像,然后在该视图中将标签作为子类。取决于你所处的情况,我想。

编辑:你应该读这个: 我误读了这个问题,看起来你可以将子视图添加到UIImageView,就像Zev在评论中指出的那样。现在我猜测-bringSubviewToFront为你做了伎俩,我的答案的其余部分,虽然不是真正有害,但是没有必要。对不起。