Uitableview Auto Resizing Row Constraint Breaking Mysteriously on iPhone 6Plus

UITableView auto resizing row constraint breaking mysteriously on iPhone 6Plus

This warning is telling you there's a conflict in your constraints.
Reduce the priority of the height constraint to 999 and it will go away. Tested it in your Github project and worked perfectly.

Sample Image

Swift UITableViewCell separatorStyle breaking autolayout on iPhone MIni

This only happens when the tableView.separatorStyle = .none

So to fix it I simply leave the separator on, but set the separator color to clear

self.tableView.separatorStyle = .singleLine
self.tableView.separatorColor = UIColor.clear

Thanks to @CloudBalacing for the help. More info about this problem here

Auto-layout: What creates constraints named UIView-Encapsulated-Layout-Width & Height?

Based on a ton of observation I believe (but cannot know for certain) that the constraints named UIView-Encapsulated-Layout-Width and UIView-Encapsulated-Layout-Height are created by UICollectionView and friends, and exist to enforce the size returned by the sizeForItemAtIndexPath delegate method. I guess it's there to ensure that the UICollectionViewCell set up by cellForItemAtIndexPath ends up the size that it was told it would be.

Which answers my initial question here. A second question is why were the constraints unsatisfiable? The cell's intrinsic height should have been the same as UIView-Encapsulated-Layout-Height. Again, I don't know for certain, but I suspect it was a rounding error (i.e. intrinsic height came to 200.1 pixels, the UIView-Encapsulated-Layout-Height maybe rounded to 200. The fix I came up with was to just lower the priority of the relevant cell constraint to allow UIView-Encapsulated-Layout-Height to have the last word.

Set constraint for the last row of Tableview

Use this method
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == ('lastRow') {
return heightNeeded
}
}

And replace 'last row' with the row you need
and heightNeeded with the pixels or height constraints required

Need to get the rest of an iterator in python

Yes, just use iter.next()

Example

iter = xrange(3).__iter__()

iter.next() # this pops 0

for i in iter:
print i

1
2

You can pop off the front of an iterator with .next(). You cannot do any other fancy operations.



Related Topics



Leave a reply



Submit