【问题标题】:How do I horizontally center a UIImageView in a UITableViewCell?如何在 UITableViewCell 中水平居中 UIImageView?
【发布时间】:2011-10-31 01:33:32
【问题描述】:

我无法在自定义的UITableViewCell 中将 200x200 图像水平居中。我已将UITableViewDelegate 中的tableViewheightForRowAtIndexPath 设置为适当的值,但这不会使我的图像水平居中,它只会垂直居中(我猜总比没有好)。我还尝试在我的自定义单元格中更改layoutSubviewsimageView.frame 的值,但这似乎没有任何效果。我什至把它注释掉了,把它放在[super layoutSubviews]; 之前,玩弄了框架的值,但我一直得到相同的结果。

谁能帮我解决这个问题?我应该写什么代码来达到这样的效果? 谢谢。

【问题讨论】:

  • 您是否使用笔尖来制作自定义的 UITableViewCell?如果没有,使用笔尖很容易完成。
  • 没有任何笔尖。我正在以编程方式做所有事情,因为我需要动态地做事情。有任何想法吗?如果没有,你能告诉我如何在 IB 中做到这一点,那么我可能知道是什么原因造成的。谢谢
  • 在IB中,你只需要把UIImageView放在cell的中心,它就会一直显示在那里。如果您想以编程方式进行,也许可以玩边界?
  • 谢谢。我得到了答案。我必须使用 contentView 的边界,而不是 imageView。我多次更改了imageView的bounds和frame的值,但我猜应该是contentView应该更改。谢谢。

标签: iphone objective-c uitableview uiimageview positioning


【解决方案1】:

您将尝试此代码对您有帮助

你需要继承UITableViewCell并覆盖layoutSubviews,如下:

- (void) layoutSubviews
{   
    [super layoutSubviews];

    self.imageView.frame = CGRectMake( 10, 10, 50, 50 ); // your positioning here
}

在您的 cellForRowAtIndexPath: 方法中,请务必返回您的新单元格类型的实例。

【讨论】:

  • 这成功了!我试图更改我添加的 UIImageView 的框架,这就是它不起作用的原因。我还发现更改 contentView 的边界可以达到相同的效果,但我想那是因为我只有一个元素:图像。谢谢。
  • 工作得很好。做个小教程,把链接贴在这里,因为这个问题让我很恼火
【解决方案2】:
    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

 UIImageView *imgView; 
 if(cell == nil)
 {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

   imgView = [[UIImageView alloc] initWithFrame:(100,0,100,62)];
    [imgView setImage:[UIImage imageNamed:@"img.png"]];
    imgView.tag = 55;
    [cell.contentView addSubview:imgView];
    [imgView release];
 } 
 else
 {
        imgView = (id)[cell.contentView viewWithTag:55];
 }

【讨论】:

    猜你喜欢
    • 2014-11-13
    • 2017-02-26
    • 2011-09-16
    • 1970-01-01
    • 2020-08-10
    • 2015-12-28
    • 2013-12-28
    • 2010-09-11
    相关资源
    最近更新 更多