问题描述
我已经创建了原型细胞的表视图在一个Storyboard与使用自动布局,在X code 5选中。
I have created a table view with prototype cells in a Storyboard with the "Use Autolayout" unchecked in Xcode 5.
这些细胞的UITableViewCell子类,主要是里面添加IBOutlets没有code。其结果是一个混乱的布局。我试过,没有运气改变口罩自动调整大小。也试过this.
The cells are UITableViewCell subclasses, mainly to add IBOutlets and no code inside. The result is a messed layout. I tried changing the Autoresizing masks with no luck. Also tried this.
如果我然而实现一个空的 layoutSubviews
它显示ok了。任何想法是怎么回事呢?
为auto尽管取消选中它的布局仍启用?
If I however implement an empty layoutSubviews
it shows ok. Any idea of what's going on?Is auto layout still enabled despite unchecking it?
编辑:
更多细节...
@interface SettingDefaultTableViewCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *label;
@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@property (nonatomic, weak) IBOutlet UIView *backgroundView;
@end
@implementation SettingDefaultTableViewCell
- (void)layoutSubviews
{
// Emtpy implementation to fix weird layout bug
}
@end
故事板与自动布局已禁用:
Storyboard with Autolayout disabled:
结果当 layoutSubviews
解决上述未使用:
Result when layoutSubviews
fix above is not used:
编辑2:
- 的单元格设置为不自动调整子视图。
- 尽管以上应该足以从得到自动调整,也都在自动掩模被设定为柔性右侧和只有底部边缘prevent子视图。
- 只有>标记设置为灵活的左边距。没有灵活的宽度或高度。
推荐答案
细胞是越来越被修改了无证的UITableViewCell的 layoutSubviews
:
The cell is getting modified by the undocumented UITableViewCell's layoutSubviews
:
- 尽管集不是没有自动调整大小子视图,默认的实现改变
backgroundView
框架。 - 这也移动
的ImageView
(以下简称>)向左尽管被配置为一个自定义样式的单元格。
- Despite set not no autoresize subviews, the default implementation changes the
backgroundView
frame. - It also moves
imageView
(the ">") to the left despite being configured as a Custom Style cell.
这样就避免了执行超的 layoutSubviews
修复它。
Thus avoiding executing super's layoutSubviews
fixes it.
这篇关于的UITableViewCell子布局的autoLayout残疾故事板搞砸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!