My Mountain Lion应用程序包含一个NSScrollView,其中包含使用NSTableViewCell的NSTableView。我希望ScrollView有圆角,比如Reminders。我在这里找到了一个答案:
[listScrollView setWantsLayer:YES];
[listScrollView.layer setCornerRadius:10.0f];
当我第一次启动应用程序时,一切都运行良好。我向下滚动列表以查看底部的项目并退出应用程序。当我重新启动应用程序时,列表的顶部向下移动以匹配滚动条的顶部,滚动条会记住我退出时滚动到的位置。但是,滚动窗口或调整窗口大小会使列表正确绘制。如果我点击其中一个列表项,它会选择应该在该位置的项目。
答案 0 :(得分:0)
我弄清楚了问题,或者至少如何避免这种奇怪的行为。
奇怪的行为是在部分向下滚动TableView的项目然后立即重新启动后退出Cocoa应用程序后查看NSScrollView内的NSTableView行。 Mountain Lion会记住应用程序部分向下滚动的状态,并开始在滚动条旋钮的顶部绘制TableView的行,这些行从列表顶部向下滑动。
问题在于我将ScrollView的图层设置为显示,我用它来为滚动视图创建圆角。
我最初使用名为listScrollView的IBOUTLET在Document的windowControllerDidLoadNib方法中设置ScrollView的Layer。
我将该代码移动到ScrollView的drawRect方法中:
if (!self.wantsLayer) {
[self setWantsLayer:YES];
[self.layer setCornerRadius:10.0f];
}
Viola,ScrollView现在有圆角,可以在ScrollView的顶部和底部剪辑ScrollView的角和滚动旋钮槽以及TableView的行角。