2012-09-01 88 views
0

我想用筆畫畫一段文字。因此,做一些搜索和試驗似乎是做到這一點的方法是將UIView子類化並在drawRect中用筆劃繪製文本。圖紙代碼如下。如何判斷UITextView文本是否包裝?

我使用它設置的方式,我使用UITextView輸入交互式文本,然後將文本傳遞到用筆畫繪製的UIView子類廣告。

這似乎是完美的工作。唯一的問題是按下返回鍵(創建一個新行),或者換行因爲它對於UITextView而言變得太寬,這些信息不會被傳遞,所以我的renderd(描邊)文本中沒有新行在UIView子類中。

任何幫助?

繪圖代碼(注意,theText是傳遞的UITextView的文本屬性):

UIFont *font = [UIFont fontWithName:@"Arial" size:fontSize]; 
    CGPoint point = CGPointMake(0,0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); 
    CGContextSetLineWidth(context, 4.0); 
    CGContextSetTextDrawingMode(context, kCGTextFillStroke); 
    CGContextSaveGState(context); 
    [theText drawAtPoint:point withFont:font]; 
    CGContextRestoreGState(context); 

回答

0

您必須複製的UITextView的包裝邏輯。詢問字符串需要多長時間的子字符串,以及什麼時候需要很長的時間來適應它的包裝。

你也可以看看DTCoreText,一個讓你渲染屬性文本的類。然而,模仿textviews並支持文本輸入的版本花費了一些東西。最後,成本可能是值得的,因爲複製一個文本視圖需要時間。

+0

謝謝大衛。這是說當返回鍵被按下時(\ n)沒有隱藏的代碼,當文本被包裝時也是如此。因爲如果有的話,我想這只是一個閱讀這些角色並傳遞給他人的問題。 – Mrwolfy

+0

返回鍵幾乎可以肯定 - 它是一個字符,告訴textView去下一行。它的另一個對你來說最成問題的包裝 - 超越,縮短了一個單詞變短的地方,使視圖迴繞一行。我敢說你最好寫自己的UITextView,而不是去猜測它的做法。你確定你使用的字體在Unicode空間中沒有刪除字符嗎?你可能能夠找到或購買一個這樣的字體,然後你就可以更容易 - 只需要替換字符。 –

相關問題