I have a UIView
in a UITableViewCell
. I'm trying to change the height of the view
with an animation. Here is what I did:
self.myViewConstraint.constant = 100; // Coming from 0
[UIView animateWithDuration:0.3f animations:^{
[self.view layoutIfNeeded];
}];
The only thing is, it's in a tableView
. So here's what I did for the heightForRow...
:
return self.myViewConstraint.constant == 0 ? 74 : 174;
Now I need to update the tableView
, so I inserted in animateWithDuration
:
[self.tableView beginUpdates];
[self.tableView endUpdates];
Because I have other things inside the the cell
, so the constraints
get messed up while the cells
height is animating. How can I update the cells
height without getting the constraints messed up? (I want the cells
height to animate.)
Here is the warning I get. (Everything works fine, but I just want to remove the warning.)
Edit I changed it a bit, and I now get this error:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7f8d62d15670 V:[tagResultTableView:0x7f8d62d901a0(107)]>",
"<NSLayoutConstraint:0x7f8d62cea010 tagResultTableView:0x7f8d62d901a0.top == UITableViewCellContentView:0x7f8d62d8fd50.topMargin - 8>",
"<NSLayoutConstraint:0x7f8d62cf0760 V:[tagResultTableView:0x7f8d62d901a0]-(8)-[UILabel:0x7f8d62d2e2e0'Limit: Up to 5 tags']>",
"<NSLayoutConstraint:0x7f8d62cf0800 UILabel:0x7f8d62d2e2e0'Limit: Up to 5 tags'.bottom == UITableViewCellContentView:0x7f8d62d8fd50.bottomMargin>",
"<NSLayoutConstraint:0x7f8d62f726d0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7f8d62d8fd50(32)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f8d62d15670 V:[tagResultTableView:0x7f8d62d901a0(107)]>
Here is an example.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return self.myViewConstraint.constant == 0 ? 74 : 174;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ReuseID];
if (!cell) {
cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ReuseID];
}
if (self.myViewConstraint.constant != 0) {
[cell doAnimation];
}
return cell;
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments