Cocoa的NSScrollView被解释得非常糟糕.我希望这里有人知道它的全部内容并且可以让我几秒钟.
所以我有一个自定义的NSView.我实现了-drawRect:它可以绘制一些东西,用颜色填充它,无论如何.然后我有一个NSScrollView包装它(通过界面生成器设置).
现在,内部自定义视图的大小必须大于适合外部滚动视图的大小 - 以便滚动.我意识到这一点.我偶然配置它,以便滚动视图调整到周围窗口的大小,但这应该无关紧要.
我重写了我的内部视图的-frame方法,以返回一个至少为1000x1000的帧.
- (NSRect)frame {
CGFloat w = 1000;
CGFloat h = 1000;
if (self.superview.bounds.size.width > w)
w = self.superview.bounds.size.width;
if (self.superview.bounds.size.height > h)
h = self.superview.bounds.size.height;
return NSMakeRect(0, 0, w, h);
}
Run Code Online (Sandbox Code Playgroud)
这是结果,我无法解释:
但
唯一充满颜色的区域(即我的-drawRect:方法对其有任何影响)是
除此之外,我什么都不知道.它看起来像矩形绘制剪裁到滚动视图窗口的位置和大小,或东西,但它不会采取滚动"位置"考虑在内.
应该指出的是,我真的不希望发生任何其他事情.我觉得我错过了一块,却找不到哪一块.对不起文字的墙,但我现在无法解释得更好.我希望它比回答要容易得多.
关心和希望,
不是瑞克阿斯特利
在一个方法中编写一些Objective-C,我调用+alloc,然后-init设置一个对象.
object = [[MyClass alloc] init];
[object useFor:whatever];
Run Code Online (Sandbox Code Playgroud)
接下来的几行代码使用新创建的对象.如果前面提到的-init时间太长,我确定程序在开始使用新对象之前不会"等待",是吗?如果没有,是否有快速确保-init完成的方法?
我有时会看到编写程序的程序员
if(object = [[MyClass alloc] init]) {
[object useFor:whatever];
}
Run Code Online (Sandbox Code Playgroud)
这是我应该去做的吗?