为表视图的内容提供动态类型

时间:2014-09-06 07:12:58

标签: ios

如果用户确实在iPhone设置中选择了另一种字体大小,我试图让表格视图的内容能够改变其字体大小。我设法通过输入以下代码来实现它:

//(Start)Updating font size
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
cell.textLabel.font = font;
//(END)

但它不会自动更新表视图的内容,我需要点击它来执行更改。我很确定我的解决方案不是正确的,所以你可以通过告诉我们实现目标的正确方法来帮助你。

以下是完整代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath(NSIndexPath *)indexPath
{
static NSString * kGroupsTableViewCell = @"kGroupsTableViewCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kGroupsTableViewCell];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kGroupsTableViewCell];
}

TGroup * group = [self.groupsArray objectAtIndex:indexPath.row];
cell.textLabel.text = group.name;

//(Start)Updating font size
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
cell.textLabel.font = font;
//(END)

if ([self.selectedGroups containsObject:group.uid]) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

return cell;
}

1 个答案:

答案 0 :(得分:0)

您只需订阅尺寸更改通知并重新加载表格即可。

- (void)viewDidLoad
{
  [super viewDidLoad];
  [[NSNotificationCenter defaultCenter] addObserver:self.tableView
      selector:@selector(reloadData)
          name:UIContentSizeCategoryDidChangeNotification
        object:nil];
}
- (void)dealloc
{
  [[NSNotificationCenter defaultCenter] removeObserver:self.tableView];
}