添加uilabel uiimage显示在合适的视图上

时间:2012-03-12 14:47:30

标签: iphone objective-c xcode

我正在为uiimage添加标签,然后在合适的视图上添加该图像。但它没有显示出来。有人可以帮忙吗?

这是我正在使用的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
         [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }
//image which contains label
    UIImageView *BgImage=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell-bg.png"]];
    BgImage.frame=cell.frame;
//label which will be on image
    UILabel *NameLAbel=[[UILabel alloc]initWithFrame:CGRectMake(25, 5, 45, 45)];


    NameLAbel.textColor=[UIColor blackColor];

    if (indexPath.row==0) {
        NameLAbel.text=@"Home";
    }
    else if (indexPath.row==1) {
        NameLAbel.text=@"You";
    }
   else if (indexPath.row==2) {
        NameLAbel.text=@"Contacts";
    }
    else if (indexPath.row==3) {
        NameLAbel.text=@"Settings";
    }
    else {
        NameLAbel.text=@"Sign Out";
    }
    NSLog(@"%@",NameLAbel.text);

    [BgImage addSubview:NameLAbel];
//adding image on cell
    [cell.contentView addSubview:BgImage];


   [NameLAbel release];
    [BgImage release];
    return cell;
}

2 个答案:

答案 0 :(得分:1)

我不确定您是否可以向UILabel添加UIImageView,虽然它们都是UIView子类,但我认为imageview只会显示图片。

在将图像添加到视图后,尝试将标签添加到cell.contentView。这应该会达到你所追求的效果。

要么{或创建UIView同时包含UIImageViewUILabel

答案 1 :(得分:1)

添加一些UI小部件作为UIImageView的子视图听起来真的很有问题。即使它现在有效,它可能在将来也不会起作用,我相信这打破了UIKit惯例。如果你想让一个视图看起来像是另一个视图的“一部分”,那么将它们作为兄弟姐妹直接放在cell.contentView中,如Amit所说,或者如果你想要剪裁,那么标签看起来就像被剪裁一样通过图像,创建一个UIView容器,启用该视图的“剪辑子视图”设置,并将UIImageView和UILabel作为兄弟姐妹放置在该容器UIView中。