iOS6からのConstraintsでUITableViewのDeleteボタンスライドインに対応する

iOS6からのConstraintsでUITableViewのDeleteボタンスライドインに対応するセルを左右にスワイプして「Delete」をするときにセルの中身が収縮するアニメーションこれはは今後なくなっていくのでしょうか?Constraintsでこれがサポートされていないらしいことを今日知りました。とりあえず、今までほとんどConstraintsを触っていなく(iOS5に対応するという理由でAuto layoutをオフにしていた)、ほとんど初めてというくらいの感じで触っていきなり悩みました。

解決法は幸いStack Overflowで見つけることができました。

なんか色々書いてありますが、結局、収縮させたいCellの上の要素に対して以下のコードを当てはめれば収縮しました。

UIImageView *ratingImageView = cell.ratingImageView;
NSDictionary *dict = NSDictionaryOfVariableBindings(ratingImageView);
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[ratingImageView]|" options:0 metrics:nil views:dict]];

この例ではratingImageViewってのが収縮させたい目的のビューですね。コードの意味はまだ完全に理解していませんが、Constraintsを使いながら振り返って理解するようになるでしょう!

追記

やっぱり参考リンクのとおりに、ConstraintsのWidthのPriorityを下げないと実行時に注意をうながすログが出てしまいました。Priorityを下げれば解消です。

参考

Pocket
LINEで送る

You may also like...