traitCollection.preferredContentSizeCategory.iOS 10的访问性类别



以下代码在iOS11上非常有效,可以检测用户是否在其辅助功能设置中设置了LARGE FONT。

然而,我也需要在iOS10中支持这一点。我怎样才能做到这一点?

现在代码看起来是这样的:

if #available(iOS 11.0, *) {
if traitCollection.preferredContentSizeCategory.isAccessibilityCategory {
return UITableViewAutomaticDimension
} else {
return someSpecificHeight
}
} else {
// how to detect is isAccessibilityCategory on non-iOS11 devices?
// is there some ugly fallback I don't know about?
}

好吧,根据@Jefflovejiant的回答,看起来我可以做到:

let sizeCategory = traitCollection.preferredContentSizeCategory
if sizeCategory == .accessibilityMedium
|| sizeCategory == .accessibilityLarge
|| sizeCategory == .accessibilityExtraLarge
|| sizeCategory == .accessibilityExtraExtraLarge
|| sizeCategory == .accessibilityExtraExtraExtraLarge {
return UITableViewAutomaticDimension
} else {
return someSpecificHeight
}

很丑,但我认为它很管用。。

我必须进行所有的==比较,因为这似乎是iOS10中唯一支持的运算符(所有其他运算符显然都添加在iOS11中)

扩展Jeff的答案。我发现在UITraitCollection中添加一个扩展更简单。希望这能帮助任何仍需为iOS 10开发的iOS开发人员(悲伤的时刻)。

extension UITraitCollection {
var isAccessibleCategory: Bool {
if #available(iOS 11, *) {
return preferredContentSizeCategory.isAccessibilityCategory
} else {
switch preferredContentSizeCategory {
case .accessibilityExtraExtraExtraLarge,
.accessibilityExtraExtraLarge,
.accessibilityExtraLarge,
.accessibilityLarge,
.accessibilityMedium:
return true
default:
return false
}
}
}
}

然后可以像这个一样使用

return traitCollection.isAccessibleCategory ? UITableView.automaticDimension : someSpecificHeight

看起来.accessibilityMedium.extraExtraExtraLarge的下一个大小,所以这可能是您的阈值。

最新更新