添加 UIImageView 作为 UILabel 的子视图,图像未显示



所以,当我用常规的旧视图执行此操作时:

UIView *topBlock = [[UIView alloc] initWithFrame:CGRectMake(0,-frameSize.height, frameSize.width, frameSize.height/2)];
[viewController.view addSubview:topBlock];
topBlock.autoresizesSubviews = NO;
topBlock.clipsToBounds = YES;
UIImage *topImage = [UIImage imageNamed:@"BloktLayout"];
UIImageView *topImageView = [[UIImageView alloc] initWithImage:topImage];
topImageView.frame = viewController.view.frame;
[topBlock addSubview:topImageView];

我在我想要的地方得到了漂亮的旧图像,在顶视图中。但是中间视图是一个UILabel,当我尝试同样的事情时:

UILabel *midBar = [[UILabel alloc] initWithFrame:CGRectMake(midBarOrigin.x, midBarOrigin.y, midBarWidth, midBarHeight)];
midBar.text = @"Blokt";
midBar.textColor = [UIColor blackColor];
midBar.textAlignment = NSTextAlignmentRight;
midBar.font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:80.0f];
[viewController.view addSubview:midBar];
midBar.autoresizesSubviews = NO;
midBar.clipsToBounds = YES;
UIImage *midImage = [UIImage imageNamed:@"BloktLayout"];
UIImageView *midImageView = [[UIImageView alloc] initWithImage:midImage];
midImageView.frame = viewController.view.frame;
[midBar addSubview:midImageView];

我在UILabel中根本没有看到任何图像。有什么帮助吗?

似乎问题与您的框架有关。

没有额外的信息很难说。您可以发布viewController.view.frameframeSizemidBarOrigin/midBarWidth/midBarHeight吗?

在第二个代码块中,midBar.clipsToBounds == YES ,但看起来midImageView.frame可能非常不同/在midBar.frame之外,在这种情况下它是不可见的。

编辑 一些屏幕截图会有所帮助,但不是必需的

编辑 2 请注意,子视图的原点始终相对于其超级视图的坐标系,从不相对于视图层次结构中任何其他视图的坐标系。这可能是问题的核心。如果您确实想将CGPoints或CGRects从一个坐标系转换为另一个坐标系,则可以在UIView上使用一些方法,例如convertRect:和convertPoint:等。

Interface Builder 甚至不允许你在 UILabel 中添加控件。

相反,如果您希望对多个控件进行分组,则可以将它们都添加为 UIView 的子视图。

换句话说,您的图像视图和标签可以共享同一个超级视图,但图像视图不能是标签的子视图。

如果它们共享相同的超级视图,则可以将图像视图放置在标签后面,只要标签的背景清晰,它就应该"穿过"标签显示。

简单的方法.....
您可以添加UIImageViewUILabel作为cell.textLabel的子视图

UIImageView *statusImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 4, 8, 8)];<br/>statusImage.backgroundColor = [UIColor redColor];<br/>
statusImage.layer.cornerRadius = 4;<br/>
statusImage.clipsToBounds = YES;<br/>
[cell.textLabel addSubview:statusImage];<br/>
UILabel *Lbl = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, cell.textLabel.frame.size.width - 15, cell.textLabel.frame.size.height)];<br/>
Lbl.text = @"xyz";<br/>
[cell.textLabel addSubview:Lbl];<br/>

我也有这个问题。我发现ImageView在标签后面。当我用UIView替换标签时,它可以正常工作。

最新更新