我有一个文本视图,我正在从互联网进来聊天,并打印它,但我想要更多的颜色比textview必须格式化聊天。我的第一个自定义视图不滚动
我用scrollview替换textview,并在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];
老实说,我不知道我可以要求上述的工作,但我想通的东西可能会奏效。有任何想法吗?对于大约2个月前开始的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);
}
如果我将整个滚动视图的内容大小设置为垂直20000,我的黄色背景停在一页,所以这看起来不对。如果我将我的视图设置为滚动视图为垂直方向2000,它会滚动,我看到我的黄色背景,我的视图仍然存在,但文本在第一页的最后一行之后仍然停止显示。 – LanternMike 2012-07-31 15:02:12
我看到我没有接受答案。我最终改变了核心文本代码,但滚动问题仍然存在,我发现这是一个窍门,内容至少是一个更大的接受这个答案。 – LanternMike 2013-05-28 09:06:30