带有静态 TableView 单元的 IOS 8 动态类型 - 基本和字幕

Posted

技术标签:

【中文标题】带有静态 TableView 单元的 IOS 8 动态类型 - 基本和字幕【英文标题】:IOS 8 Dynamic Type with Static TableView Cell - Basic and Subtitle 【发布时间】:2014-10-11 11:28:40 【问题描述】:

在设置中更改文本大小并返回应用程序后,Basic 和 Subtitle 类型的静态单元格并留空,直到您离开视图或重新加载应用程序。自定义静态单元格保留其文本。

易于复制。

创建一个单视图应用,将 UIViewController 替换为 UiTableViewController。 将内容从动态单元格更改为静态单元格。

设置样式单元格 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 不是这种情况。我在这里遗漏了什么还是这是一个错误?

【问题讨论】:

【参考方案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 样式,并且单元格在动态类型大小更改后保留其内容。

【讨论】:

以上是关于带有静态 TableView 单元的 IOS 8 动态类型 - 基本和字幕的主要内容,如果未能解决你的问题,请参考以下文章

为啥在将单元格插入带有静态单元格的表格视图时需要 tableView(_:indentationLevelForRowAt:)

带有故事板的自定义静态 TableView - 单元格背景

带有 Tableview 和静态单元格的空弹出框

iOS8:可以对静态单元格使用“tableview.rowHeight = UITableViewAutomaticDimension”吗?

静态 tableView 中的 touchesBegan 未被调用

Xamarin ios - 如何从静态 TableView 访问单元格