traitCollection.preferredContentSizeCategory.isAccessibilityCategory 对于 iOS 10
traitCollection.preferredContentSizeCategory.isAccessibilityCategory for iOS 10
以下代码在 iOS11 上运行良好,可以检测用户是否在其辅助功能设置中设置了大字体。
但是,我也需要在 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?
}
它 looks like .accessibilityMedium
是 .extraExtraExtraLarge
的下一个尺码,所以这可能是您的门槛。
好的,根据@Jefflovejapan 的回答,看来我可以这样做:
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
以下代码在 iOS11 上运行良好,可以检测用户是否在其辅助功能设置中设置了大字体。
但是,我也需要在 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?
}
它 looks like .accessibilityMedium
是 .extraExtraExtraLarge
的下一个尺码,所以这可能是您的门槛。
好的,根据@Jefflovejapan 的回答,看来我可以这样做:
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