objective-c – 是什么原因导致白色边框应用于系统菜单中显示的NSProgressIndicator?

objective-c – 是什么原因导致白色边框应用于系统菜单中显示的NSProgressIndicator?,第1张

概述这是当我创建NSProgressIndicator和 use NSStatusItem‘s -setView: method以在我执行 *** 作时在菜单栏区域中显示它时发生的情况: Example of messed up NSProgressIndicator http://cl.ly/l9R/content 是什么原因导致显示此边框,如何删除它?预期的结果是控件是透明的. 这是我正在使用的代码: N 这是当我创建nsprogressIndicator和 use NSStatusItem‘s -setView: method以在我执行 *** 作时在菜单栏区域中显示它时发生的情况:

Example of messed up NSProgressIndicator http://cl.ly/l9R/content

是什么原因导致显示此边框,如何删除它?预期的结果是控件是透明的.

这是我正在使用的代码:

nsprogressIndicator *progressIndicator = [[nsprogressIndicator alloc] init];[progressIndicator setBezeled: NO];[progressIndicator setStyle: nsprogressIndicatorSpinningStyle];[progressIndicator setControlSize: NSSmallControlSize];[progressIndicator sizetoFit];[progressIndicator startAnimation: self];[statusItem setVIEw: progressIndicator]; // statusItem is an NsstatusItem instance...[statusItem setVIEw: nil];[progressIndicator stopAnimation: self];[progressIndicator release];
解决方法 不要缩放nsprogressIndicator,尽管它也是NSVIEw.创建一个精确调整大小的新视图,将状态指示器放在该视图中,并将封闭视图传递给 – [NsstatusItem setVIEw:].这是我的实施.

在NsstatusItem AnimatedProgressIndicator.m中,

- (voID) startAnimation {    NSVIEw *progressIndicatorHolder = [[NSVIEw alloc] init];    nsprogressIndicator *progressIndicator = [[nsprogressIndicator alloc] init];    [progressIndicator setBezeled: NO];    [progressIndicator setStyle: nsprogressIndicatorSpinningStyle];    [progressIndicator setControlSize: NSSmallControlSize];    [progressIndicator sizetoFit];    [progressIndicator setUsesThreadedAnimation:YES];    [progressIndicatorHolder addSubvIEw:progressIndicator];    [progressIndicator startAnimation:self];    [self setVIEw:progressIndicatorHolder];    [progressIndicator center];    [progressIndicator setNextResponder:progressIndicatorHolder];    [progressIndicatorHolder setNextResponder:self];}- (voID) stopAnimation {    [self setVIEw:nil];}- (voID) mouseDown:(NSEvent *) theEvent {    [self popUpStatusItemmenu:[self menu]];}- (voID) rightmouseUp:(NSEvent *) theEvent {}- (voID) mouseUp:(NSEvent *) theEvent {}…

我添加了一个自定义方法 – [NSVIEw center],它执行以下 *** 作:

@implementation NSVIEw (Centering)- (voID) center {    if (![self supervIEw]) return;    [self setFrame:NSMakeRect(        0.5 * ([self supervIEw].frame.size.wIDth - self.frame.size.wIDth),0.5 * ([self supervIEw].frame.size.height - self.frame.size.height),self.frame.size.wIDth,self.frame.size.height    )];}@end
总结

以上是内存溢出为你收集整理的objective-c – 是什么原因导致白色边框应用于系统菜单中显示的NSProgressIndicator?全部内容,希望文章能够帮你解决objective-c – 是什么原因导致白色边框应用于系统菜单中显示的NSProgressIndicator?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存