首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义contentView中的UITableViewCell宽度错误?

自定义contentView中的UITableViewCell宽度错误?
EN

Stack Overflow用户
提问于 2012-11-05 00:40:56
回答 1查看 14.1K关注 0票数 6

在UITableViewCell子类中,我重写layoutSubviews,因为我需要计算几个子视图的帧。我所有计算的基础是内容视图的宽度。layoutSubviews实现的开始是这样的:

代码语言:javascript
运行
复制
- (void) layoutSubviews
{
  [super layoutSubviews];  // invoke this to set up the content view's bounds

  CGFloat contentViewWidth = self.contentView.bounds.size.width;

  [...]  // calculate and assign frames to subviews
}

我已经开始在iPhone模拟器中的分组表视图中测试这一点。单元格应该只由内容视图中的内容组成,也就是说,我已经关闭了周围所有花哨的东西。具体来说,我已经通过将附件类型设置为UITableViewCellAccessoryNone来禁用附件视图。因此,附件视图是隐藏的,尽管它的界限/帧属性仍然报告大小为20/20。

基于所有这些,以及下面的简单说明,我希望上面代码片段中的内容视图宽度报告为300。

代码语言:javascript
运行
复制
<----------- screen width = 320 ----------->
+------------------------------------------+
|                                          |
|    <--- content view width = 300 --->    |
|    +--------------------------------+    |
|<-->|         table view cell        |<-->|
| 10 +--------------------------------+ 10 |
|                                          |
|                  [...]                   |

但事实并非如此,实际报告的内容视图宽度为270!

一些研究表明,这30个缺失点由以下三个部分组成: a)附件视图的宽度20;b)内容视图与附件视图之间的10间隔。我尝试将附件视图大小设置为0/0,其效果是内容视图宽度现在报告为290。稍好一点,但仍差10分。我还尝试将accessoryView属性设置为nil,但视图只是由[super layoutSubviews]重新创建。

最后,问题是:是否有一种方法可以使真正禁用附件视图,使其不包含在内容视图宽度的计算中?或者,跳过调用[super layoutSubviews]并自己计算宽度是安全的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-23 21:44:36

在重温这个问题后,我发现我不能再重复问题中所描述的行为。现在的行为如预期的那样:

  • 表视图单元格的默认辅助样式是UITableViewCellAccessoryNone
  • accessoryView属性返回nil
  • 内容视图宽度报告为302。

我现在正在iPhone 5.1模拟器上的Xcode 4.2中测试这一点。当我问这个问题时,我相信我还在运行iPhone 4.3模拟器。我现在必须假设,这个问题要么只存在于4.3模拟器中,要么是由于我的部分Xcode错误配置所致,或者最初完全是假想的。

记录在案:我的解决方法是将新的宽度应用于layoutSubviews中的content视图

代码语言:javascript
运行
复制
- (void) layoutSubviews
{
  [super layoutSubviews];

  CGRect contentViewFrame = self.contentView.frame;
  contentViewFrame.size.width = 302;
  self.contentView.frame = contentViewFrame;

  [...]
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13224556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档