在设置中更改文本大小并返回应用程序后,将显示“基本”和“字幕”类型的静态单元格,并保持空白,直到您离开视图或重新加载应用程序。自定义静态单元格保留其文本。
易于复制。
创建单个视图应用程序,用UiTableViewController替换UIViewController。 将内容从动态单元格更改为静态单元格。
设置样式单元格0 =自定义,单元格1 =基本,单元格2 =字幕
连接所有
的属性@property (weak, nonatomic) IBOutlet UILabel *customCell;
@property (weak, nonatomic) IBOutlet UILabel *basicCell;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *subTitleLabel;
将以下内容添加到viewDidLoad
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(updateInterfaceForDynamicTypeSize) name:UIContentSizeCategoryDidChangeNotification object:nil];
self.customCell.text = @"Custom Cell";
self.basicCell.text = @"Basic Cell";
self.titleLabel.text = @"My Title";
self.subTitleLabel.text = @"My Sub Title";
添加以下方法
-(void)updateInterfaceForDynamicTypeSize {
UIFont *font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
self.customCell.font = font;
self.basicCell.font = font;
self.titleLabel.font = font;
font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
self.subTitleLabel.font = font;
[self.tableView reloadData];
}
运行应用程序 - 然后转到“设置”并更改文本大小。 返回应用程序,仅显示自定义单元格内容。
IOS 7的情况并非如此。我在这里遗漏了什么或这是一个错误吗?
答案 0 :(得分:1)
在故事板中配置您的单元格以使用自定义类而不是默认UITableViewCell
简单的自定义单元格实现如下:
// DynamicTypeResistantCell.h
#import <UIKit/UIKit.h>
@interface DynamicTypeResistantCell : UITableViewCell
@end
// DynamicTypeResistantCell.m
@implementation DynamicTypeResistantCell
- (void)_systemTextSizeChanged
{
// don't call super!
}
@end
然后,您可以安全地使用Basic和Subtitle样式,并在动态类型大小更改后保留其内容。