objective-c – 强制NSView以编程方式重绘

objective-c – 强制NSView以编程方式重绘,第1张

概述我的应用程序有两种不同的状态,每个状态都代表一个NSView. 因此,一次只显示一个视图,问题是当我在视图之间切换时,应用程序不显示新状态,直到我手动调整窗口大小! 我搜索了这个问题,并提供了多个解决方案,但没有任何对我有用: [myView setNeedsDisplay:YES];[myView display];[[myView.window contentView] setNeedsD 我的应用程序有两种不同的状态,每个状态都代表一个NSVIEw.

因此,一次只显示一个视图,问题是当我在视图之间切换时,应用程序不显示新状态,直到我手动调整窗口大小!

我搜索了这个问题,并提供了多个解决方案,但没有任何对我有用:

[myVIEw setNeedsdisplay:YES];[myVIEw display];[[myVIEw.window contentVIEw] setNeedsdisplay:YES];[mySubVIEw1 setHIDden:YES]; || [mySubVIEw1 removeFromSuperVIEw];

我甚至将myVIEw定义为Outlet,但没有任何效果.

这是我的代码

if (appState == 1) {    [self.splitVIEw setFrameSize:CGSizeMake(self.splitVIEw.frame.size.wIDth,self.vIEw.frame.size.height - 250)];    [self.mySubVIEw1 setHIDden:NO];    [self.mySubVIEw2 setHIDden:YES];    [self.mySubVIEw2 removeFromSupervIEw];    [self.mySubVIEw1 addSubvIEw:self.inCallVIEw];}else{    [self.splitVIEw setFrameSize:CGSizeMake(self.splitVIEw.frame.size.wIDth,self.vIEw.frame.size.height - 70)];    [self.mySubVIEw1 setHIDden:YES];    [self.mySubVIEw2 setHIDden:NO];    [self.mySubVIEw1 removeFromSupervIEw];    [self.mySubVIEw2 addSubvIEw:self.chatheaderVIEw];}// I need to redraw here[self.vIEw setNeedsdisplay:YES];[self.mySubVIEw1 setNeedsdisplay:YES];[self.mySubVIEw2 setNeedsdisplay:YES];// and nothing happened until I resize my window manually
解决方法 我发现它,代码很好,无需调用任何重绘方法,唯一的问题任何UI *** 作都需要在MAIN线程中完成

所以最终的代码是:

dispatch_async( dispatch_get_main_queue(),^{    if (appState == 1) {        [self.splitVIEw setFrameSize:CGSizeMake(self.splitVIEw.frame.size.wIDth,self.vIEw.frame.size.height - 250)];        [self.mySubVIEw1 setHIDden:NO];        [self.mySubVIEw2 setHIDden:YES];    }    else    {        [self.splitVIEw setFrameSize:CGSizeMake(self.splitVIEw.frame.size.wIDth,self.vIEw.frame.size.height - 70)];        [self.mySubVIEw1 setHIDden:YES];        [self.mySubVIEw2 setHIDden:NO];    }});

多谢你们.

总结

以上是内存溢出为你收集整理的objective-c – 强制NSView以编程方式重绘全部内容,希望文章能够帮你解决objective-c – 强制NSView以编程方式重绘所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1015097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存