Macos 滚动长列表时的模糊列表视图数据浏览器(OS X/Carbon)
我有一个碳应用程序与列表视图数据浏览器和垂直滚动。当列表很长(数百个项目)时,快速滚动窗口会产生模糊的、有时是“模糊”的文本: 还可能出现其他瑕疵,例如剪裁或重叠的线。有时,整个内容只是一个漩涡状的污点。单击任何项目都会导致ListView内容的正常重新绘制。以下是Interface Builder查看ListView的方式: 我正在使用Xcode 3.2.6构建MacOSX10.5.sdk。建造和测试符合10.6的规定。我不会对滚动事件进行任何特殊处理。我只为Macos 滚动长列表时的模糊列表视图数据浏览器(OS X/Carbon),macos,user-interface,macos-carbon,Macos,User Interface,Macos Carbon,我有一个碳应用程序与列表视图数据浏览器和垂直滚动。当列表很长(数百个项目)时,快速滚动窗口会产生模糊的、有时是“模糊”的文本: 还可能出现其他瑕疵,例如剪裁或重叠的线。有时,整个内容只是一个漩涡状的污点。单击任何项目都会导致ListView内容的正常重新绘制。以下是Interface Builder查看ListView的方式: 我正在使用Xcode 3.2.6构建MacOSX10.5.sdk。建造和测试符合10.6的规定。我不会对滚动事件进行任何特殊处理。我只为itemDataCallbac
itemDataCallback
、itemNotificationCallback
和itemcarbecallback
定义了DataBrowserCallbacks
我的问题是:这可能是什么原因造成的?我找到了答案,下面是给子孙后代的答案: 事实证明,当列表视图数据浏览器位于非整数水平偏移处时,问题始终且仅会发生
HIViewSetFrame()
接受一个HIRect
参数,该参数使用float
类型作为origin
和size
。如果调整父帧的大小,使浏览器的原点位于非整数origin.x
,则会触发图形错误。垂直偏移或尺寸标注是否为非整数并不重要
解决方案是确保在调整窗口大小时移动的浏览器的x值四舍五入:
frame.origin.x = roundf(frame.origin.x);
任何其他控件似乎都没有与非整数原点相关的任何问题