gpt4 book ai didi

ios - 更改 UIActionSheet 中项目的文本颜色 - iOS 8

转载 作者:IT王子 更新时间:2023-10-29 07:43:07 26 4
gpt4 key购买 nike

我一直在使用以下代码来更改我在 UIActionSheet 中添加的项目的文本颜色。:

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
for (UIView *subview in actionSheet.subviews) {
if ([subview isKindOfClass:[UIButton class]]) {
UIButton *button = (UIButton *)subview;
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}
}

它在 iOS7 中运行良好,但在 iOS8 中,上面的代码不会改变项目的文本颜色。

现在我的问题是如何使用 iOS8 更改我在 UIActionSheet 中添加的项目的文本颜色?

附加信息:
我添加了断点来查看上面代码中的以下行是否被执行:

UIButton *button = (UIButton *)subview;
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

这些行不会被执行。因此,对于 actionSheet.subviews 的所有项目,if([subview isKindOfClass:[UIButton class]]) 始终为 false。所以我认为的是UIActionSheet 已更改。

最佳答案

如果您仍想使用 UIActionSheet 而不是 UIAlertController 以支持旧的 iOS 版本,有一个简单的方法。

UIActionSheet 在 iOS 8 中实际上使用了 UIAlertController,它有一个私有(private)属性 _alertController

SEL selector = NSSelectorFromString(@"_alertController");
if ([actionSheet respondsToSelector:selector])
{
UIAlertController *alertController = [actionSheet valueForKey:@"_alertController"];
if ([alertController isKindOfClass:[UIAlertController class]])
{
alertController.view.tintColor = [UIColor blueColor];
}
}
else
{
// use other methods for iOS 7 or older.
}

对于 Swift Below 代码应该可以工作

let alertAction = UIAlertAction(title: "XXX", style: .default) { (action) in

}

alertAction.setValue(UIColor.red, forKey: "titleTextColor")

关于ios - 更改 UIActionSheet 中项目的文本颜色 - iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154889/

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