UITableViewCell 类布局无法以编程方式工作

Posted

技术标签:

【中文标题】UITableViewCell 类布局无法以编程方式工作【英文标题】:UITableViewCell Class Layout is not working programmatically 【发布时间】:2017-02-16 10:57:40 【问题描述】:

我要问的是,当我以编程方式更改约束时,输出会出错,但如果故事板输出中的相同约束发生更改,则更适合我上传图片。

Change of constraints programmatically and the output is smashed

Change the constraint with same constant '0' in storyboard and o/p is perfect

这是我的特定单元格的代码:

@IBOutlet var imageView1: UIImageView!
@IBOutlet var imageView2: UIImageView!
@IBOutlet var imageView3: UIImageView!
@IBOutlet var imageView4: UIImageView!
@IBOutlet var imageView5: UIImageView!

@IBOutlet var bttnImageCover1: UIButton!
@IBOutlet var bttnImageCover2: UIButton!
@IBOutlet var bttnImageCover3: UIButton!
@IBOutlet var bttnImageCover4: UIButton!
@IBOutlet var bttnImageCover5: UIButton!

@IBOutlet var image1HeightCR: NSLayoutConstraint!
@IBOutlet var image1HeightRR: NSLayoutConstraint!
@IBOutlet var image2HeightCR: NSLayoutConstraint!
@IBOutlet var image2HeightRR: NSLayoutConstraint!
@IBOutlet var image3HeightCR: NSLayoutConstraint!
@IBOutlet var image3HeightRR: NSLayoutConstraint!
@IBOutlet var image4HeightCR: NSLayoutConstraint!
@IBOutlet var image4HeightRR: NSLayoutConstraint!
@IBOutlet var image5HeightCR: NSLayoutConstraint!
@IBOutlet var image5HeightRR: NSLayoutConstraint!

/* StoryBoard Outlets End */

var imagesArr               =   [UIImageView]()
var imagesConstraintsArr    =   [NSLayoutConstraint]()
var imagesRRConstraintsArr  =   [NSLayoutConstraint]()
var bttnCoverArr    =   [UIButton]()
var totalImages     =   Int()

override func awakeFromNib() 
    super.awakeFromNib()
    // Initialization code

    imagesArr       =   [imageView1,imageView2,imageView3,imageView4,imageView5]
    imagesConstraintsArr    =   [image1HeightCR,image2HeightCR,image3HeightCR,image4HeightCR,image5HeightCR]
    imagesRRConstraintsArr  =   [image1HeightRR,image2HeightRR,image3HeightRR,image4HeightRR,image5HeightRR]

    bttnCoverArr            =   [bttnImageCover1,bttnImageCover2,bttnImageCover3,bttnImageCover4,bttnImageCover5]



override func setSelected(_ selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state


override func layoutSubviews() 
    print("totalImages in Static cell:\(totalImages)")
    for i in (totalImages..<imagesConstraintsArr.count)
        print("i:\(i)")
        imagesConstraintsArr[i].constant    =   0 **strong text**// This is the devil. I want to change it to 0 to make it disappear but it stretching his upper neighbour view.  
        imagesRRConstraintsArr[i].constant  =   0 **strong text**// Another brother of devil
    

【问题讨论】:

尝试将 layoutIfNeeded() 放在 for 循环的末尾。 【参考方案1】:

在您要更新约束的 UIImageViews 上更新 for 循环中的 NSLayoutConstraint 后,您需要触发 imageView.layoutIfNeeded

【讨论】:

感谢您的帮助。 @NaveenKumawat 没问题,如果它解决了您的问题,请记住将其标记为答案,以便社区可以看到它已解决。总帐 声望低于 15 我的投票不会公开显示。

以上是关于UITableViewCell 类布局无法以编程方式工作的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 UITableViewCell 中添加自定义视图?

使用锚以编程方式设置 UITableViewCell 的布局

如何在标准 UITableViewCell 中以编程方式自动布局右侧的自定义 UIButton。

我在自定义 UITableViewCell 中以编程方式设置布局约束时遇到问题

ios UITableViewCell 以编程方式在drawRect vs layoutSubviews中创建

无法在 UITableViewCell 中以编程方式创建的 UIButton 上设置图像