nativescript - 允许/阻止标签的可访问性字体大小调整
问题描述
我正在 NativeScript-Vue 应用程序中实现字体大小的可访问性。
我想允许或阻止通过 Android 和 iOS 的 XML 属性调整标签大小,但是平台上的行为和实现是不同的。
Android
默认情况下会缩放所有标签。如果我希望标签不调整大小,我需要setTextSize
在loaded
事件中调用该函数,遵循这个解决方案。
<Label text="Not resizable" @loaded="$androidFixedLabelSize($event, 70)" />
Vue.prototype.$androidFixedLabelSize = function({ object }, fontSize) {
if (object.android)
object.nativeView.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, utils.layout.toDevicePixels(fontSize));
}
iOS
标签默认不缩放。要调整标签大小,我需要使用nativescript-accessibility-ext插件并添加属性accessibilityAdjustsFontSize
。
<Label text="Resizable" accessibilityAdjustsFontSize="true" />
必须为固定的 Android 添加一个属性,为可调整大小的 iOS 添加一个属性有点麻烦。
我正在考虑让所有标签默认调整大小,并指定我是否希望不通过指令或属性调整大小。
我可以通过自定义指令来实现这一点吗?或者是其他东西?
更新
我能够通过指令在没有硬编码字体大小的情况下防止在 Android 上调整大小,但是有一个问题:update
仅针对少数标签触发。el.nativeView.android
inbind
和inserted
hooks 是未定义的。
Vue.directive("noresize", {
update: el => {
if (el.nativeView.android) {
el.nativeView.android.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, el.nativeView.fontSize);
} else {
// iOS code
}
}
});
在 iOS 上,我想简单地设置accessibilityAdjustsFontSize="false"
,但这意味着默认情况下它是真的。
那么接下来的问题就是:如何accessibilityAdjustsFontSize="true"
在iOS上的所有Label组件上进行设置?
解决方案
感谢@nota/nativescript-accessibility-ext 的开发者 Morten Sjøgren ,我能够添加一个全局事件。可访问性调整大小现在应用于所有 Label 组件,除非该属性noResize
为 true。
应用程序.js
import '@nota/nativescript-accessibility-ext';
import { Label } from 'tns-core-modules/ui/label';
// code
Label.on(Label.loadedEvent, ({ object }) => {
if (object.noResize) {
if (object.android) {
object.nativeView.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, object.fontSize);
}
} else {
object.accessibilityAdjustsFontSize = "true";
}
});
<Label text="Don't resize" noResize="true" />
推荐阅读
- spring - spring - 为什么在 application.properties 中定义属性的变量值
- java - 将 XML 数据附加到 ArrayList
- html - 在不同宽度的图像上将 Div 定位在同一位置
- javascript - 如何使图像标题显示在滚动条上
- reactjs - setInterval 上的计数器增量
- ios - 如何更新 UITableViewCell?
- python - OperationalError:250003:未能获得响应。绞刑?方式:邮寄
- python - Keras LSTM 用于将句子转换为文档上下文向量
- swift - Swift - 无法同时满足约束
- git - 为什么 git push 失败了?错误:未能将一些参考推送到