cocoa – 为什么NSView的frame方法返回错误的结果?

cocoa – 为什么NSView的frame方法返回错误的结果?,第1张

概述我偶尔想要改变一个NSView的维度.为此,获取各种视图的尺寸,相对于彼此调整它们,然后使用setFrame:重新定位是有帮助的. 问题是,从我的角度来看,frame方法通常会返回明显错误的NSRects. 我有一个程序,在Interface Builder中设置了NSPanel,并与我的主程序有各种连接.为了测试框架返回的NSRects,我在应用程序的awakeFromNib:方法中打开了面板, 我偶尔想要改变一个NSVIEw的维度.为此,获取各种视图的尺寸,相对于彼此调整它们,然后使用setFrame:重新定位是有帮助的.

问题是,从我的角度来看,frame方法通常会返回明显错误的NSRects.

我有一个程序,在Interface Builder中设置了NSPanel,并与我的主程序有各种连接.为了测试框架返回的NSRects,我在应用程序的awakeFromNib:方法中打开了面板,检索了一些NSRects,并将它们打印到控制台.

这是我的awakeFromNib:

- (voID)awakeFromNib {  NSLog(@"in awakeFromNib");  [self showPrefsSheet:self]; //this is the prefs sheet with the controls of interest                              //note that it does indeed pop up and is displayed  originalFrame = [aTextVIEw frame];  NSLog(@"the frame is %d,%d,%d",originalFrame.origin.x,originalFrame.origin.y,originalFrame.size.wIDth,originalFrame.size.height);  originalFrame = [abutton frame];  NSLog(@"the frame is %d,originalFrame.size.height);  return;  }

此代码的结果在控制台中如下所示:

in awakeFromNibthe frame is 0,0the frame is 0,1079230464,1078329344

请注意,(i)面板和两个控件都显示在屏幕上; (ii)我知道这些插座是正确连接的,因为我可以通过编程方式对控件进行 *** 作并让它们工作; (iii)界面构建器在“尺寸和位置”下的检查器中显示正确的框架尺寸.

简而言之,该计划的其他一切工作正常.实际上,框架尺寸似乎没有正确设置.

有人能告诉我如何检索真实的帧信息吗?或者至少解释我看到的结果?

解决方法 帧坐标是浮点数,但您的日志消息使用%d. (整数).

将NSLog字符串更改为:

@"the frame is %f,%f,%f"

编辑:

这是调试rects时使用的一个非常有用的宏:

#define RECTLOG(rect)    (NSLog(@""  #rect @" x:%f y:%f w:%f h:%f",rect.origin.x,rect.origin.y,rect.size.wIDth,rect.size.height ));

然后,您可以执行简单的rect日志:

RECTLOG([aTextVIEw frame]);
总结

以上是内存溢出为你收集整理的cocoa – 为什么NSView的frame方法返回错误的结果?全部内容,希望文章能够帮你解决cocoa – 为什么NSView的frame方法返回错误的结果?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存