0

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

我用滚动视图替换了文本视图,并在 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 编程还很陌生,大约 2 个月前就开始了,并且一直在不停地工作。在 java 或 android 中,似乎没有什么比将其添加到一些滚动控件中更能像控制台一样滚动了。但事实证明 IOS 更棘手。

麦克风

编辑。这是我的绘制矩形,它假设打印越来越长的字符串。它在控制台视图中:

- (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);
}
4

2 回答 2

0

您需要设置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 设置为大于视图框架大小(如果可滚动),则此示例仅适用于水平或垂直滚动​​的一种方式。

于 2012-07-31T14:20:38.950 回答
0

ScrollView 的 contentSize 必须大于 ScrollView 的 frame 才能允许滚动。正确设置此属性,您应该没问题。

于 2012-07-31T14:21:39.683 回答