gpt4 book ai didi

iPhone 编程——UIView 元素似乎忽略了 Hidden=NO 调用

转载 作者:行者123 更新时间:2023-12-01 17:59:54 24 4
gpt4 key购买 nike

使用 XCode 4.4 和 Mountain Lion,

我有一个 UIImageView,在那个 View 上,我有一个 UIProgressView 和一个 UIButton。当应用程序启动时,进度 View 和按钮都被隐藏,如 Storyboard中设置的那样。然后我尝试取消隐藏它们,首先是我正在做某事时的进度条,然后是当我完成时的按钮。我已经为这两个项目打电话,

[self.view bringSubviewToFront:saveToCameraRoll];

尝试将它们放在 UIView 的前面。

问题是,当我以编程方式尝试取消隐藏它们时,它不起作用。我可以打电话:
progressBar.hidden = NO;
[self.view bringSubviewToFront:progressBar];

而这无济于事。

因此,我尝试在 Storyboard 中将所有内容设置为可见,然后在 Controller 加载后以编程方式将所有内容设置为不可见。没有成交;现在我对 hidden = YES 的调用似乎被忽略了。

然后我删除了所有实际的编程,所以点击按钮应该只会导致按钮和进度条出现,原因可能是主线程被饿死并且无法更新。

如何强制元素注意隐藏?

编辑 :我现在还尝试以编程方式将 alpha 从 1 修改为 0。没有变化。就像我所做的一切都被忽略了。我通过 ctrl-drag 方法将这些项目放入 .m 文件的 @interface 部分;也许我没有更多的委托(delegate)或接口(interface)或任何连接?

最佳答案

正如您所说,您将 ivars 与您的 XIB 文件连接起来,您的问题似乎是您正在主线程上做一些事情,这反过来会阻止运行循环,并且您的 UI 不再被重绘。当您通过更改其属性来更新 UI 元素时,这些更改不会立即应用,而是在下一次重新绘制 UI 时发生,这仅在您给主线程 runloop 一个运行机会时才会发生。但是,如果您执行类似以下代码的操作,则更改将永远不会出现:

[button setHidden:YES];

[self doSomethingReallyExpensiveAndTimeConsuming];

[button setHidden:NO];

这段代码的结果是按钮被设置为隐藏,但没有被重绘,因为系统没有机会这样做,当系统实际上有机会重绘 UI 时,按钮已经设置为无形的。解决这个问题的方法是拆分工作并通过主线程上的计时器安排它,或者使用 GCD 之类的东西来卸载辅助线程上的工作(但是你需要确保你的代码是线程安全的!)

关于iPhone 编程——UIView 元素似乎忽略了 Hidden=NO 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696943/

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