문제

나는 Apple이 제공하는 ikimageviewdemo를 사용하려고합니다.http://developer.apple.com/mac/library/samplecode/ikimageviewdemo/index.html) 그리고 나는 그것에 스크롤 바를 추가하려고 노력하고 있습니다. 두 가지를 시도했습니다.

1) scrollview에 ikimageview를 임베딩합니다. 이것은 이미지가 더 이상 있었던 곳에 위치하지 않았으며, 스크롤 바는 창문이 아무리 큰지에 상관없이 고정 장소에있는 것처럼 보였습니다 (그래서 창을 축소하고 스크롤 바를 잃을 수 있습니다. 스크롤 뷰가 창과 크기를 조정하도록 설정되었지만)

2) 나는 OpenImageUrl 메소드의 코드에 [_imageView sethashorizontalsCrollers : 예]를 추가했습니다. 이것은 아무것도하지 않은 것 같습니다.

내가 분명한 것을 놓치고 있습니까?

또한 : 왜

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);

B 1 스크롤러 0?

도움이 되었습니까?

해결책

ikimageviewdemo에서 당신을 잡을 수있는 한 가지는 이미지가 확대되도록 확대되었다는 것입니다. windowDidResize: 방법 ([_imageView zoomImageToFit: self]).

nsscrollview에 ikimageview를 포함시키는 것이 옳은 일입니다. 크기를 조정할 때 스크롤 바가 창을 따라 가도록하려면 인터페이스 빌더에서 스프링과 스트럿 (== 자동화 마스크)을 조정해야합니다.

부록: 알다시피, Mac OS X 10.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의 버전입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top