美文网首页iOS学习笔记
使用Masonry布局UITableViewCell的子控件的坑

使用Masonry布局UITableViewCell的子控件的坑

作者: 斐然___FeiRan | 来源:发表于2016-09-08 09:23 被阅读674次

    /** * 要修改、设置子控件的frame时,都要在layoutSubviews方法中进行。 这个方法专门用来布局子控件,一般在这里设置子控件的frame,即在该方法中对子控件进行布局。当控件本身的尺寸发生改变的时候、当控件即将被展现出来的时候,系统会自动调 用这个方法 。一旦父控件的frame发生改变,就会立刻调用这个方法,来对子控件进行重新布局以适配父控件frame的改变。

     -(void)layoutSubviews{    [super layoutSubviews];} 

    但如果是想用Masonry对UITbableViewCell中的子控件布局的话,就不能不能再layoutSubviews方法中进行对其进行布局,否则会报如下错误:

    couldn't find a common superview for<UIImageView:> and<UITableViewCellContentView:>即找不到这两个空间的父视图。我试着在UITableViewCellContentView中先添加一个UIView,具体代码如下:     

     UIView *view = [[UIView alloc] initWithFrame:self.contentView.bounds];       

     [self.contentView addSubview:self.view]; 

    然后把自己想要往UITbableViewCell中添加的所有子控件,例如UIImageView等,都添加到这个UIView中,原先是添加到UITableViewCellContentView中的,这样UIImageView等子控件和UIView就都在UITableViewCellContentView中了,但这样设置之后报错,内容为:

    couldn't find a common superview for <UIImageView:> and < UITableViewCellContentView:>。

    上网查了很久也没找到解决的办法,最后把约束设置的代码放在initWithStyle:reuseIdentifier方法中,在一初始化的时候就设置其自控件的相关约束,这样就编译通过了。

    相关文章

      网友评论

        本文标题:使用Masonry布局UITableViewCell的子控件的坑

        本文链接:https://www.haomeiwen.com/subject/rfltdttx.html