Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 自动克罗尔问题_Cocoa_Autoscroll - Fatal编程技术网

Cocoa 自动克罗尔问题

Cocoa 自动克罗尔问题,cocoa,autoscroll,Cocoa,Autoscroll,1.创建cocoa应用程序(非基于文档) 2.创建一个新类“StretchView”(子类NSView) 3.打开界面生成器并将“滚动视图”拖动到主窗口 4.选择“滚动视图”并设置类别“StretchView”(在类别标识窗口中) contentview的大小是500*500,strechview的大小也是500*500 (水平滚动已启用) 然后我开始一个接一个地水平地画一些数字(1,2,3,4……)。 当数字超出范围(x位置大于500)时,我增加宽度 在StretchView中。(到目前为止一

1.创建cocoa应用程序(非基于文档)

2.创建一个新类“StretchView”(子类NSView)

3.打开界面生成器并将“滚动视图”拖动到主窗口

4.选择“滚动视图”并设置类别“StretchView”(在类别标识窗口中)

contentview的大小是500*500,strechview的大小也是500*500 (水平滚动已启用)

然后我开始一个接一个地水平地画一些数字(1,2,3,4……)。 当数字超出范围(x位置大于500)时,我增加宽度 在StretchView中。(到目前为止一切正常)

然后我试着让水平滚动条自动滚动到最后,所以 每次我增加StretchView的宽度时,最后一个数字可能是 看到了

代码如下:

//The timer is called every sec
-(void)myTimerAction:(NSTimer *) timer
{  
    NSLog(@"myTimerAction");

       //......
    int i = _myArray.count;
    NSRect rect = [self frame];
    int width = rect.size.width;

       //The width between two number is 10
       //When the x pos of current num is bigger then the scroll's width
    if((i * 10) > width) {

           //reset the width
        width = i * 10;
        [self setFrameSize:CGSizeMake(width, rect.size.height)];
           //How to make it autoscroll???
           //...............................
    }
    //......
    [self setNeedsDisplay:YES];
} 
试试这个:

NSView *contentView = [[self enclosingScrollView] contentView];
CGFloat newXPosition = width - NSWidth([contentView bounds]);
if (newXPosition > 0.0) [self scrollPoint:NSMakePoint(newXPosition, 0.0)];
contentView
是封闭滚动视图中的剪辑视图。您希望将当前视图滚动到视图中的x点,以便此x点+剪裁视图宽度给出视图的最后一个剪裁视图宽度点