Ответ 1
ОБНОВЛЕНИЕ: это решение устарело, как на iOS 7.
См. этот ответ ниже. В iOS 7.0 было введено свойство textContainerInset
на UITextView
:
textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);
Решение Pre-iOS 7:
У меня создалось впечатление, что contentInset подавляет uitextview, не вызывая эту горизонтальную полосу прокрутки...
Я боюсь, что это не так, как contentInset
работает с UITextView
. См. Документация Apple для contentInset
, где указано:
Расстояние, которое вид содержимого находится в виде вложенного вида прокрутки... Используйте это свойство для добавления в область прокрутки вокруг содержимого.
Добавлен contentInset
вокруг содержимого.
Вы можете изменить contentSize
в viewDidLayoutSubviews
с помощью кода, который вы указали выше:
- (void)viewDidLayoutSubviews
{
self.textView.contentInset = UIEdgeInsetsMake(0, 50, 0, 0);
NSLog(@"Content Size Before %f",self.textView.contentSize.width); //Logs: 280
CGSize size=self.textView.contentSize;
size.width=size.width-50;
[self.textView setContentSize:size];
NSLog(@"Content Size After %f",self.textView.contentSize.width); //Logs: 230
}
Однако это приводит к отключению текста с правой стороны:
Лучшим способом, которым я смог добиться появления горизонтальной прокладки в UITextView
, является расположение его внутри контейнера UIView
. В вашем случае просто создайте UIView
того же размера, что и текущее текстовое представление, и добавьте текстовое представление, которое на 50 пикселей меньше в представлении контейнера.
Это обходное решение может вызвать проблемы, если у вас есть фон для вашего текстового вида, но из вашего скриншота над ним не похоже, что проблема для вас.
UITextView
(рамка в красном) внутри контейнера UIView
:
Если ваш UITextView
имеет фон, см.
- Как установить вкладку содержимого UITextView, например приложение Notes.
- Материал, который вы узнали из обратного инжиниринга Notes.app (см. раздел "iPadding" ).
Надеюсь, что это поможет, и если кто-нибудь сможет найти лучшее решение, я бы хотел услышать об этом!