开发者

Adding ScrollView to a BottomView of Horizontal Split View in Cocoa

开发者 https://www.devze.com 2022-12-26 03:07 出处:网络
I have a custom View which i would like to place on a bottom view of split view dynamically. I need a scroll view for that bottom view. How can I get a scroll view for a bottom view of horizontal spli

I have a custom View which i would like to place on a bottom view of split view dynamically. I need a scroll view for that bottom view. How can I get a scroll view for a bottom view of horizontal split view?

P开发者_开发问答leas help me on this.

Thanks in Advance bp


In IB:

  1. Make the top and bottom views.
  2. Select the bottom view and choose Layout → Embed Objects In → Scroll View.
  3. Select the top and bottom views and choose Layout → Embed Objects In → Split View.


I made TUSplitSyncScrollView like below images.

Adding ScrollView to a BottomView of Horizontal Split View in Cocoa

Adding ScrollView to a BottomView of Horizontal Split View in Cocoa

Adding ScrollView to a BottomView of Horizontal Split View in Cocoa

In this code, I used KVO for observing another window's behavior as below:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
{
    if (keyPath == @"observedPresentScale") {
        // 自身のzoomScaleに監視しているobservedPresentScaleの値を代入する
        // まず拡大縮小可能にする
        self.maximumZoomScale = 1000.0;
        self.minimumZoomScale = 0.001;
        self.zoomScale = [change[@"new"] floatValue];
        // ここで拡大縮小禁止にする
        self.maximumZoomScale = self.zoomScale;
        self.minimumZoomScale = self.zoomScale;
        printf("zoomScale = %f\n", self.zoomScale);
    }
    else if (keyPath == @"observedContentOffsetY") {
        self.contentOffset = CGPointMake(self.contentOffset.x, [change[@"new"] floatValue]);
    }
}

And both two views observe each other.

int opt = NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew;

// rightSplitedScrollViewをleftSplitedScrollViewのオブザーバにする
[leftSplitedScrollView addObserver:rightSplitedScrollView forKeyPath:@"observedPresentScale" options:opt context:NULL];
[leftSplitedScrollView addObserver:rightSplitedScrollView forKeyPath:@"observedContentOffsetY" options:opt context:NULL];

// leftSplitedScrollViewをrightSplitedScrollViewのオブザーバにする
[rightSplitedScrollView addObserver:leftSplitedScrollView forKeyPath:@"observedContentOffsetY" options:opt context:NULL];
//    [rightSplitedScrollView addObserver:leftSplitedScrollView forKeyPath:@"observedPresentScale" options:opt context:NULL];

You can run the actual project from here:https://github.com/weed/TUSplitSyncScrollView

0

精彩评论

暂无评论...
验证码 换一张
取 消