我有一个文本视图,我正在接受来自互联网的聊天并打印它,但我想要比文本视图格式化聊天更多的颜色。
我用滚动视图替换了文本视图,在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设置为大于可滚动的视图框大小,则此示例仅适用于水平或垂直单向滚动。