1

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

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 中根本看不到任何图像。有什么帮助吗?

4

4 回答 4

1

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

很难说没有额外的信息。你能发布viewController.view.frame,frameSizemidBarOrigin/ midBarWidth/midBarHeight吗?

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

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

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

于 2013-07-12T19:05:04.723 回答
0

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

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

换句话说,你的 image view 和 label 可以共享同一个 superview,但是 image view 不能是 label 的 subview。

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

于 2013-07-12T19:14:50.300 回答
0

简单的方法......
您可以添加UIImageView,UILabel作为子视图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/>
于 2015-09-11T12:36:35.293 回答
0

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

于 2016-07-01T02:51:00.413 回答