iOS 验证 uiview 已更改颜色

Posted

技术标签:

【中文标题】iOS 验证 uiview 已更改颜色【英文标题】:iOS verify the uiview has change color 【发布时间】:2014-09-04 21:14:51 【问题描述】:

我正在尝试更改 UIView 的背景颜色。这是我的代码:

UIView *myView = [self.view viewWithTag:21];
[self.view bringSubviewToFront:myView];
myView.backgroundColor = [UIColor yellowColor];

我验证了:

if ([myView.backgroundColor isEqual:[UIColor yellowColor]])
    
        NSLog(@"my view is yellow!");
    

但在 iPhone 的屏幕上永远不会改变颜色。我在不同的项目中尝试了相同的代码,它工作得很好。有谁知道哪里出了问题?

【问题讨论】:

抱歉,我正在清理我的代码。我做了更正 你确定这发生在主线程中吗? 如何检查是否是主线程? 检查***.com/questions/7237473/… 【参考方案1】:

确保您在主线程中进行 UI 更改,而不是在完成处理程序或任何其他后台任务中。

【讨论】:

【参考方案2】:

嗯,你正在做一些从代码 sn-p 中有点不清楚的事情。

该代码对于您正在尝试执行的操作绝对正确,但我假设您遇到该问题是由于您程序中其他地方的代码。

例如:如果您在某个时候隐藏视图,您将不会获得颜色变化。如果视图曾经以某种方式“锁定”,您就会遇到问题。或者,如果此操作在也可能导致挂起的后台线程上进行。

所以我会查看其余的代码,看看是否有其他东西阻碍了它。

【讨论】:

我明白这很奇怪。我什至尝试重置视图的位置“myView.frame = CGRectMake(0, 0,280,323);”并且不起作用。 发生了一些可疑的事情。但是如果没有你的所有代码,这将很难调试

以上是关于iOS 验证 uiview 已更改颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用 CAGradientLayer 类更改 UiView IOS 的渐变背景图层颜色

iOS 7.1 中的 UITabBarItem 更改徽章颜色

在 SwiftUI 中更改 UIView 背景颜色

iOS 以编程方式更改 uiview 布局

当 UIViewController 显示弹出框时,更改 CALayer 颜色与 UIView tintColor 同步

在 iOS 13 中更改状态栏颜色? [复制]