我有一个使用基于约束的自动布局构建的自定义tableview +自定义单元格(所有编程方式,没有IB)。在每个单元格中,(包括其他)具有文本的(可能的)多行标签。自动布局的第一次计算很好 - 即UILabel根据其文本长度正确包装。
但是一旦我选择了一个单元格(即从UITableViewCellAccessoryNone更改为UITableViewCellAccessoryCheckmark),我就会遇到布局问题,并且UILabel.text所需的行数应该改变 - 但是保持不变。
我试过......
[myTableView reloadData];
和
[myTableView beginUpdate];
[myTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[myTableView endUpdates];
...在单元格选择的委托中,但没有成功更新单元格的布局。
我想我需要告诉系统重新评估tableviewcell的约束(特别是重新评估UILabel的preferredMaxLayoutWidth。)但是我不知道如何以正确的方式做到这一点。 (我尝试了一些setNeedsUpdate,而不是试错法。)
提前感谢我指出了正确的方向!
答案 0 :(得分:1)
您必须通过以下方式专门为UILabel重新评估preferredMaxLayoutWidth: -
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT