Questo funziona per me. Cambiare il testo Visualizza contenutoInset e cornice inserto/posizione per ottenere il padding e il ritorno a capo corretto. Quindi modificare i limiti del testo per impedire lo scorrimento orizzontale. È inoltre necessario reimpostare il padding ogni volta che il testo viene selezionato e modificato.
- (void)setPadding
{
UIEdgeInsets padding = UIEdgeInsetsMake(30, 20, 15, 50);
textView.contentInset = padding;
CGRect frame = textView.frame;
// must change frame before bounds because the text wrap is reformatted based on frame, don't include the top and bottom insets
CGRect insetFrame = UIEdgeInsetsInsetRect(frame, UIEdgeInsetsMake(0, padding.left, 0, padding.right));
// offset frame back to original x
CGFloat offsetX = frame.origin.x - (insetFrame.origin.x - (padding.left + padding.right)/2);
insetFrame = CGRectApplyAffineTransform(insetFrame, CGAffineTransformMakeTranslation(offsetX, 0));
textView.frame = insetFrame;
textView.bounds = UIEdgeInsetsInsetRect(textView.bounds, UIEdgeInsetsMake(0, -padding.left, 0, -padding.right));
[textView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
}
-(void)textViewDidChangeSelection:(UITextView *)textView
{
[self setPadding];
}
-(void)textViewDidChange:(UITextView *)textView
{
[self setPadding];
}
fonte
2012-07-12 18:29:09
Sì, questo è quello che sto facendo ora. Funziona bene per i margini laterali, ma il margine superiore ha problemi. Dal punto di vista dell'utente, il testo viene "troncato" nella parte superiore durante lo scorrimento perché il testo viene visualizzato solo in UITextView. – strawtarget
E non è possibile visualizzare correttamente la barra di scorrimento verticale in questo modo. – an0
L'impostazione 'textView.clipsToBounds = NO'" riparerà "il taglio in alto, una specie di. Ovviamente, questo non aiuta a mostrare correttamente la barra di scorrimento verticale. – villapossu