改变contentInset值会有一个不可预料的副作用,尤其是当你显示滚动条的时候。当用户拖拽内容到顶部或者底部,滚动条会越过任何被定义在contentInset的区域之内的范伟,例如navigation controller和toolbar。 想要修正这个问题,你必须设置scrollIndicatorInsets属性。设置vertical inset值限制了垂直滚动条,避免了越区域显示滚动条的问题。 滚动到特定的Offset:滚动到特定的top-left位置可以通过两种方式完成: setConte
若要使NSTableView支持滚动,通常会将其嵌套入NSScrollView控件中。 i=0; i<20; i++) { [_dataArray addObject:[NSString stringWithFormat:@"%d行数据",i]]; } NSScrollView * scrollView = [[NSScrollView alloc] init]; scrollView.hasVerticalScroller = YES; scrollView.frame i=0; i<20; i++) { [_dataArray addObject:[NSString stringWithFormat:@"%d行数据",i]]; } NSScrollView * scrollView = [[NSScrollView alloc] init]; scrollView.hasVerticalScroller = YES; scrollView.frame
Storyboard 上拖了一个 TextField 和两个 TextView 进去,设置好约束之后,我准备把三个控件连到代码中……然后我尴尬地发现 NSTextView 连到 IBOutlet 之后,类型是 NSScrollView 这个时候我还没有意识到自己已经一只脚踏进坑里,我心想难道 NSTextView 是 NSScrollView 的子类?那我手动把它改成 NSTextView 吧……然后迎接我的是各种 crash。 后来仔细揣摩了一下 Storyboard 里控件的层级关系,我发现之前真的只是单纯地连了个 NSScrollView 到代码中,真正的 NSTextView 在一个奇怪的地方: ?
[outlineView addTableColumn:tableColumn]; NSScrollView *scrollView = [[NSScrollView alloc] init]; scrollView.documentView
的AppKit,只是把原来在Mac OSX中的NS前缀改为UI前缀而已,因此,多数情况下,你在iOS中经常用的控件基本上Mac上已经存在了,试着使用NS来代替UI开头查找一下,你会惊讶的发现许多控件:NSScrollView
确保单击 NSScrollView 的外部,因为 NSScrollView 它会拦截您的单击,并且不会命中 -[NSResponder mouseUp:] 断点。
我们发现我们刚才创建的 NSTableView显示的背景颜色是白色的,我们可以关闭 NSScrollView的绘制背景颜色和设置 NSTableView的背景颜色为透明即可。 ?