我有一個文本視圖,我正在從互聯網進來聊天,並打印它,但我想要更多的顏色比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