【问题标题】:UITableViewCell Class Layout is not working programmaticallyUITableViewCell 类布局无法以编程方式工作
【发布时间】: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 循环的末尾。

标签: ios iphone uitableview swift3 xcode8


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助。
  • @NaveenKumawat 没问题,如果它解决了您的问题,请记住将其标记为答案,以便社区可以看到它已解决。总帐
  • 声望低于 15 我的投票不会公开显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多