我的第一个自定义视图不是滚动



我有一个文本视图,我正在接受来自互联网的聊天并打印它,但我想要比文本视图格式化聊天更多的颜色。

我用滚动视图替换了文本视图,在viewdidload中,我试图(似乎可以工作)将我的视图类附加到它上

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _myconsoleview = [[ConsoleView alloc] initWithFrame:[self._scview bounds]];
    [_myconsoleview setBackgroundColor: [UIColor yellowColor]];
    [self._scview addSubview:_myconsoleview];
    [self._scview setNeedsDisplay];
}

当文本到达底部时,它没有滚动(我试着用鼠标拖动文本并寻找滚动条)。

所以这个示例的核心文本程序说,哦,滚动起来很容易。只需让我的自定义视图(ConsoleView)继承滚动视图本身。所以我现在尝试并添加这个:

@interface ConsoleView :UIScrollView<UIScrollViewDelegate>

仍然没有滚动。没有滚动条。没有任何迹象,到目前为止,我正在使用ipad模拟器进行任何滚动。在ConsoleView中,我想最终做一些非常完美的事情,但现在我只是打印一个字符串。但是当我添加更多的文本时,字符串会变长。

我在sendtext方法中尝试过这个。当他们点击按钮将他们在该文本字段中键入的文本发送到服务器时,就会出现这种情况:

   [myconsoleviewid addNewText:newText];
    [_scview scrollRectToVisible:[_scview bounds] animated: TRUE];
    [_scview setNeedsDisplay];

老实说,我不确定我是否能声称上述方法有效,但我认为有些方法可能有效。有什么想法吗?我对ios编程还很陌生,大约两个月前就开始了,到目前为止我断断续续地进行编程。在java或android中,似乎没有什么比将控制台添加到滚动控件更能像控制台一样滚动了。但事实证明,IOS更为棘手。

Mike

编辑。这是我画的矩形,用来打印越来越长的字符串。它在consoleview中:

- (void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetTextMatrix(context, CGAffineTransformIdentity);
    CGContextTranslateCTM(context, 0, self.bounds.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);    CGMutablePathRef path = CGPathCreateMutable(); //1
    CGPathAddRect(path, NULL, self.bounds );

    CTFramesetterRef framesetter =
    CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attString); //3
    CTFrameRef frame =
    CTFramesetterCreateFrame(framesetter,
                             CFRangeMake(0, [attString length]), path, NULL);
    CTFrameDraw(frame, context); //4
    CFRelease(frame); //5
    CFRelease(path);
    CFRelease(framesetter);
}

滚动视图的contentSize必须大于滚动视图的框架才能允许滚动。正确设置此属性,您应该没事。

您需要设置具有适当大小的可滚动区域的scrollView.contentSize

scrollView.contentSize = CGSizeMake(640, 320); // if you are in full screen and have two view one to other in horizontal

//对于垂直滚动,您需要进行

scrollView.contentSize = CGSizeMake(320, 640);

如果您将contentSize设置为大于可滚动的视图框大小,则此示例仅适用于水平或垂直单向滚动。

最新更新