因此,当我使用常规旧视图执行此操作时:
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中根本看不到任何图像。有什么帮助吗?
答案 0 :(得分:1)
好像这个问题与你的框架有关。
如果没有其他信息,说得太过分了。您可以发布viewController.view.frame
,frameSize
和midBarOrigin
/ midBarWidth
/ midBarHeight
吗?
在第二个代码块midBar.clipsToBounds == YES
中,看起来midImageView.frame
可能非常不同/在midBar.frame
之外,在这种情况下它将不可见。
修改有些屏幕截图会有所帮助,但不是必需的
编辑2 请注意,子视图的原点始终相对于其超视图的坐标系,从不相对于视图层次结构中任何其他视图的坐标系。这可能是这个问题的核心。如果您确实希望将CGPoints或CGRects从一个坐标系转换为另一个坐标系,UIView上有方法,如convertRect:和convertPoint:等。
答案 1 :(得分:0)
Interface Builder甚至不允许您在UILabel中添加控件。
相反,如果您希望对多个控件进行分组,则可以将它们添加为UIView的子视图。
换句话说,您的图片视图和标签可以共享同一个超级视图,但图片视图不能是标签的子视图。
如果他们共享相同的超级视图,您可以将图像视图放在标签后面,只要标签的背景清晰,它就应该显示在“标签”之外。
答案 2 :(得分: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/>
答案 3 :(得分:0)
我也遇到了这个问题。 我发现ImageView落后于标签。 当我用UIView替换标签时,它可以正常工作。