它不工作,只是因爲你已經在UITextField
聲明的文本和您所申請的CGRectInset
的字體大小。其實它應該是根據您設置的字體大小。例如,對於字體大小爲14.0,只需更改您的方法如下:
- (CGRect)textRectForBounds:(CGRect)bounds {
return CGRectInset(bounds , 30, 6);
}
-(CGRect) editingRectForBounds:(CGRect)bounds {
return CGRectInset(bounds , 30, 6);
}
原因是該文本的繪製矩形。例如,當我們將UITextField
的字體大小設置爲14.0時,它至少需要18.0的高度才能調整幀中的文本。所以它需要在文本週圍增加4個像素,你可以說它覆蓋幀。由於在這種情況下,這種情況是不令人滿意的,因爲據我估計你已經調整了字體大小爲14.0和默認幀高度爲UITextField
是30.0和你的邊緣掩碼是7.0每邊意味着總共14.0 。因此,對於文本的rect返回16.0,這反過來阻止操作系統更新文本框架,因爲它在圖形上下文之外。我希望你清楚。如果它解決了你的問題,那麼請接受我的答案。更好的回答如下:
- (CGRect)textRectForBounds:(CGRect)bounds {
return CGRectInset(bounds , 30, (30 - self.font.pointSize - 4)/2);
}
-(CGRect) editingRectForBounds:(CGRect)bounds {
return CGRectInset(bounds , 30, (30 - self.font.pointSize - 4)/2);
}
享受!
你實現這些創建文本週圍的插圖?還有其他方法可以實現這一點,也許更少車。 –
你確定你不是壓倒一切嗎?因爲我用一個自定義文本實現了一個簡單的測試項目,只需重寫上面的兩個方法,文本水平滾動到最後。 – florian
如果您將textfield直接放入xib中,則其工作正常,因爲adjustsFontSizeToFitWidth選項已設置爲「YES」。但如果你做動態分配的文本字段類,你應該設置textFieldObject.adjustsFontSizeToFitWidth = YES; – Yogendra