我正在尝试使用苹果(http://developer.apple.com/mac/library/samplecode/IKImageViewDemo/index.html)提供的IKImageViewDemo,并尝试在其上添加滚动条。我试过两种方法:
1)在ScrollView中嵌入IKImageView。这有各种奇怪的效果,比如图像不再位于它应该在的位置,滚动条似乎在一个固定的位置,无论窗口有多大(所以我可以缩小窗口并丢失滚动条,即使滚动视图被设置为随窗口调整大小)
2)我在openImageURL方法的代码中添加了_imageView setHasHorizontalScrollers: YES。这似乎没有起到任何作用。
我是不是漏掉了什么明显的东西?
另外:为什么
NSLog(@"scrollbar? H %d V %d hide %d",
_imageView.hasHorizontalScroller,
_imageView.hasVerticalScroller,
_imageView.autohidesScrollers);
_imageView.hasHorizontalScroller = YES;
_imageView.hasVerticalScroller = YES;
_imageView.autohidesScrollers = YES;
NSLog(@"scrollbar? H %d V %d hide %d",
_imageView.hasHorizontalScroller,
_imageView.hasVerticalScroller,
_imageView.autohidesScrollers);给我:
scrollbar? H 0 V 0 hide 0
scrollbar? H 0 V 0 hide 0另外:
同样,为什么:
BOOL b = _imageView.autohidesScrollers = YES;
NSLog (@"b %d scrollers %d", b, _imageView.autohidesScrollers);是否打印b1滚动条0?
发布于 2010-01-25 04:42:18
在IKImageViewDemo中,您可能会注意到的一件事是,图像被缩放以适应windowDidResize:方法([_imageView zoomImageToFit: self])。
在NSScrollView中嵌入IKImageView是正确的做法。为了让滚动条在调整窗口大小时跟随窗口,您需要在界面生成器中调整弹簧和struts (==自动调整大小掩码)。
附录:正如你已经注意到的,MacOSX10.6中有一个错误,导致它不能正常工作。您可以通过将NSScrollView子类化来解决此问题,如下所示:
@interface IKImageClipView : NSClipView
- (NSRect)docRect;
@end
@implementation ScrollViewWorkaround
- (void)reflectScrolledClipView:(NSClipView *)cView;
{
NSView *_imageView = [self documentView];
[super reflectScrolledClipView:cView];
if ([_imageView isKindOfClass:[IKImageView class]] &&
[[self contentView] isKindOfClass:[IKImageClipView class]] &&
[[self contentView] respondsToSelector:@selector(docRect)]) {
NSSize docSize = [(IKImageClipView *)[self contentView] docRect].size;
NSSize scrollViewSize = [self contentSize];
// NSLog(@"doc %@ scrollView %@", NSStringFromSize(docSize), NSStringFromSize(scrollViewSize));
if (docSize.height > scrollViewSize.height || docSize.width > scrollViewSize.width)
((IKImageView *)_imageView).autohidesScrollers = NO;
else
((IKImageView *)_imageView).autohidesScrollers = YES;
}
}
@end试试这个:
http://dl.dropbox.com/u/1583683/IKImageViewDemo.zip
这是一个带有滚动条和上述变通方法的IKImageViewDemo版本。
https://stackoverflow.com/questions/2060614
复制相似问题