答案 0 :(得分:3)
好的,首先让我这样说:虽然我很高兴能够快速找到一种方法来容纳iOS辅助功能设置提供的动态文本(我将在一秒内显示代码)我认为它得到原始问题的答案仍然很重要。
也就是说,这是我对表视图代码所做的,以尊重某些用户需要的更大类型。这是一个两步的过程。首先,添加:
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension
到viewDidLoad方法。然后,在cellForRowAtIndexPath方法中,在返回单元格之前添加以下内容:
cell.textLabel!.numberOfLines = 0
祝你好运,如果您有原始问题请加上答案:)
答案 1 :(得分:1)
动态类型仅适用于已实现text styles的文本。
因此,如果您始终要禁用动态类型并在单元格中显示相同大小的类型,请不要使用文本样式,也不要使用image size adjustment他们。
但是,如果您确实要使用文本样式,请不要在Interface Builder中为每个文本元素打勾Automatically Adjusts Font
(相当于代码中的adjustsFontForContentSizeCategory
)。
答案 2 :(得分:0)
感谢@zeeple提供解决方案。 这是原始问题的答案:
Objective-C中的“ preferredContentSizeCategory”是一种方法,但是在Swift中,它是一个只读变量。
所以在您的AppDelegate中是这样的:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
// MARK: - UIApplicationDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
UIApplication.classInit
self.window = UIWindow(frame: UIScreen.main.bounds)
...
self.window?.makeKeyAndVisible()
return true
}
}
// MARK: - Fix Dynamic Type
extension UIApplication {
static let classInit: Void = {
method_exchangeImplementations(
class_getInstanceMethod(UIApplication.self, #selector(getter: fixedPreferredContentSizeCategory))!,
class_getInstanceMethod(UIApplication.self, #selector(getter: preferredContentSizeCategory))!
)
}()
@objc
var fixedPreferredContentSizeCategory: UIContentSizeCategory {
return .large
}
}