gpt4 book ai didi

ios - UISegmentedControl 辅助功能模式样式

转载 作者:行者123 更新时间:2023-12-04 13:24:17 29 4
gpt4 key购买 nike

我正在为我的分段控件设置颜色,如下所示:

segmentedControl.backgroundColor = .gray
segmentedControl.selectedSegmentTintColor = .red

let textAttrs: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.white
]
segmentedControl.setTitleTextAttributes(textAttrs, for: .normal)
它运行良好,但是当用户长按它时(在设置中启用大字体),我得到以下信息:
enter image description here
如您所见,文本是不可读的。有没有办法为辅助功能 View 设置背景/色调颜色?
我发现的最佳解决方案是为标题属性中的文本设置背景颜色,如下所示:
let textAttrs: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.white,
.backgroundColor: segmentedControl.backgroundColor!
]
segmentedControl.setTitleTextAttributes(textAttrs, for: .normal)

let textAttrsSelected: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.white,
.backgroundColor: segmentedControl.selectedSegmentTintColor!
]
segmentedControl.setTitleTextAttributes(textAttrsSelected, for: .selected)
结果更好(至少文本可读),但仍然不好看:
enter image description here
理想情况下,我希望辅助功能模态视图与主 View 中的所选项目具有相同的背景颜色和色调。

最佳答案

似乎没有任何公共(public) API 可以帮助您解决此问题。您应该向 Apple 提出反馈请求。
同时,如果您对有点hacky的解决方法感兴趣,您可以覆盖 Controller 的presentViewController:animated:completion:并稍微“触摸” View 层次结构。

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
{
NSString* controllerClassName = NSStringFromClass(viewControllerToPresent.class);

if([controllerClassName hasPrefix:@"UIAccessibility"] && [controllerClassName containsString:@"Segmented"])
{
[[viewControllerToPresent valueForKey:@"segmentButtons"] enumerateObjectsUsingBlock:^(UIButton* _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[obj setValue:nil forKeyPath:@"segment.appearanceStorage"];
}];
}

[super presentViewController:viewControllerToPresent animated:flag completion:completion];
}
如果您没有自定义分段控件,这将使弹出框显示为原样:
Popover
如您所见,那里有一些私有(private) API 使用,因此您需要将其隐藏。
如果您想自定义弹出窗口以显示为您的分段控件,这将更加困难。白色选择矩形是一个图像,因此您需要对其进行修改,但还要考虑更改外观(亮/暗模式):
Selection Image
我建议不要走那条路。默认外观弹出窗口应该足够好。

关于ios - UISegmentedControl 辅助功能模式样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69517210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com