UITextView textContainerInset не соответствует значению нижнего вставки
У меня есть UIView, отображающий NSAttributedString. Он настроен на изменение размера, чтобы соответствовать его содержимому.
Я хотел бы создать некоторое дополнение между текстом и представлением, однако оно не совсем работает. Если я это сделаю...
view.textContainerInset = UIEdgeInsetsMake(0, 15, 0, 15);
... тогда левое и правое края дополняются, а верх и низ не имеют места. Это верно. Затем я добавляю верхнюю вставку:
view.textContainerInset = UIEdgeInsetsMake(15, 15, 0, 15);
Теперь верх имеет наложение 15 пунктов, но внезапно нижняя часть слегка подбита (примерно на 10 пунктов).
Если я затем добавлю нижнюю прокладку на 15 пунктов, нижняя часть станет слишком большой, а интервал не будет одинаковым. Вместо этого я должен его выманить:
view.textContainerInset = UIEdgeInsetsMake(15, 15, 5, 15);
Является ли это ошибкой iOS 7 или я что-то не понимаю? Я ненавижу выдумывать нижнее значение, не понимая, что происходит.
Ответы
Ответ 1
Я не уверен, что дает, но у меня такая же проблема, похоже, ошибка в части Apple. Я тестирую iOS7.1.
В моем конкретном случае я пытаюсь добавить некоторую вставку в верхнюю и нижнюю части, например.
view.textContainerInset=UIEdgeInsetsMake(100, 0, 100, 0);
Как говорится в первоначальном вопросе, нижняя вставка 100, по-видимому, игнорируется.
Я наткнулся на то, что я могу это сделать:
view.textContainerInset=UIEdgeInsetsMake(100, 1, 100, 0);
Это дает мне ожидаемую нижнюю вставку. Я могу жить с (предполагаемой) 1-точечной вставкой слева, поэтому я буду использовать это как обходной путь, который должен (теоретически) работать под текущей версией iOS и не полностью ломаться, как только они исправляют ошибку. Я также, конечно, отправлю отчет об ошибке.
Ответ 2
Все еще присутствует в iOS 8.4 (Simulator).
Если Inset left
и right
равны 0, нижняя часть не соблюдается.
Это соблюдается, если любое свойство слева или справа не равно 0:
_title.textContainerInset = UIEdgeInsetsMake( dy, 0, dy, 0.001);