Минимальный шаг строк это: ГОСТ 2.304-81 ЕСКД. Шрифты чертежные

Содержание

Изменение размера таблицы, столбца или строки в PowerPoint

PowerPoint

Рисунки, диаграммы и таблицы

Таблицы

Таблицы

Изменение размера таблицы, столбца или строки в PowerPoint

PowerPoint для Microsoft 365 PowerPoint 2021 PowerPoint 2019 PowerPoint 2016 PowerPoint 2013 PowerPoint 2010 PowerPoint 2007 Еще…Меньше

Изменить размер таблицы или столбцов или строк обычно так же просто, как перетаскивать с помощью указателя. При необходимости можно также ввести определенный размер.

Изменение ширины столбца таблицы или высоты строк

  1. Щелкните таблицу, содержащую столбец или строку, размер которой требуется изменить.

  2. Выполните одно или оба указанные ниже действия.

    • Чтобы изменить ширину столбца, наведите указатель на границу столбца, размер которого требуется изменить, а затем, когда указатель станет , перетащите столбец вправо или влево.

    • Чтобы изменить высоту строки, наведите указатель на границу строки, размер которой требуется изменить, а затем, когда указатель станет , перетащите строку вверх или вниз.

      Примечания: 

      • Вы также можете выбрать параметры в группе Размер ячейки

        , чтобы изменить размер строк и столбцов. В разделе Работа с таблицами на вкладке Макет в группе Размер ячейки введите нужный размер в полях Высота и Ширина .

      • Минимальная высота ячейки зависит от размера шрифта текста в ячейке таблицы.

Изменение размеров таблицы

Перетаскивание, чтобы изменить размер таблицы

  1. Щелкните таблицу, размер которой требуется изменить.

  2. org/ListItem”>

    На границе таблицы наведите указатель на маркер изменения размера, а затем, когда указатель станет , щелкните и перетащите маркер, чтобы сделать таблицу больше или меньше. Дескриптор изменения размера — это кластер точек, который отображается в углах и сторонах таблицы.

    Обратите внимание на указанные ниже признаки.

    • Чтобы сохранить одинаковое соотношение между высотой и шириной таблицы при ее изменении, нажмите и удерживайте клавишу SHIFT при перетаскивании, чтобы изменить размер таблицы.

    • Чтобы сохранить таблицу по центру слайда, нажмите и удерживайте нажатой клавишу CTRL, чтобы изменить размер таблицы.

    • org/ListItem”>

      Если таблица слишком велика для слайда, нажмите кнопку Отменить на панели быстрого доступа, чтобы вернуть таблицу в исходный размер.

Ввод значений для размеров таблицы

  1. Щелкните таблицу, размер которой требуется изменить.

  2. В разделе Работа с таблицами на вкладке Макет в группе Размер таблицы введите нужный размер в полях Высота и Ширина .

    Чтобы сохранить одинаковое соотношение между высотой и шириной таблицы при ее изменении, установите флажок Закрепить пропорции .

Перемещение таблицы

  1. Щелкните таблицу, которую нужно переместить.

  2. Наведите указатель на внешнюю границу таблицы (но не на точки), а затем, когда указатель станет , щелкните и перетащите границу, чтобы переместить таблицу.

Совет: Чтобы переместить таблицу и создать ее дубликат, при перетаскивании таблицы нажмите и удерживайте нажатой клавишу CTRL.

См. также

Изменение полей между текстом и краями фигуры или надписи

41 вопрос о работе со строками в Python / Хабр

Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.

Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.

Хочу сегодня поделиться со всеми желающими моей шпаргалкой по работе со строками в Python. Я оформил её в виде списка вопросов, который использую для самопроверки. Хотя эти вопросы и не тянут на полноценные задачи, которые предлагаются на собеседованиях, их освоение поможет вам в решении реальных задач по программированию.



1. Как проверить два объекта на идентичность?

Оператор is возвращает True в том случае, если в две переменные записана ссылка на одну и ту же область памяти. Именно об этом идёт речь при разговоре об «идентичности объектов».

Не стоит путать is и ==. Оператор

== проверяет лишь равенство объектов.

animals           = ['python','gopher']
more_animals      = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False

Обратите внимание на то, что animals и even_more_animals не идентичны, хотя и равны друг другу.

Кроме того, существует функция id(), которая возвращает идентификатор адреса памяти, связанного с именем переменной. При вызове этой функции для двух идентичных объектов будет выдан один и тот же идентификатор.

name = 'object'
id(name)
#=> 4408718312

2. Как проверить то, что каждое слово в строке начинается с заглавной буквы?

Существует строковый метод

istitle(), который проверяет, начинается ли каждое слово в строке с заглавной буквы.

print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False

3. Как проверить строку на вхождение в неё другой строки?

Существует оператор in, который вернёт True в том случае, если строка содержит искомую подстроку.

print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False

4.

Как найти индекс первого вхождения подстроки в строку?

Есть два метода, возвращающих индекс первого вхождения подстроки в строку. Это — find() и index(). У каждого из них есть определённые особенности.

Метод find() возвращает -1 в том случае, если искомая подстрока в строке не найдена.

'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1

Метод index() в подобной ситуации выбрасывает ошибку ValueError.

'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found

5. Как подсчитать количество символов в строке?

Функция len() возвращает длину строки.

len('The first president of the organization..') #=> 41

6.

Как подсчитать то, сколько раз определённый символ встречается в строке?

Ответить на этот вопрос нам поможет метод count(), который возвращает количество вхождений в строку заданного символа.

'The first president of the organization..'.count('o') #=> 3

7. Как сделать первый символ строки заглавной буквой?

Для того чтобы это сделать, можно воспользоваться методом capitalize().

'florida dolphins'.capitalize() #=> 'Florida dolphins'

8. Что такое f-строки и как ими пользоваться?

В Python 3.6 появилась новая возможность — так называемые «f-строки». Их применение чрезвычайно упрощает интерполяцию строк. Использование f-строк напоминает применение метода

format().

При объявлении f-строк перед открывающей кавычкой пишется буква f.

name = 'Chris'
food = 'creme brulee'
f'Hello.  My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'

9. Как найти подстроку в заданной части строки?

Метод index() можно вызывать, передавая ему необязательные аргументы, представляющие индекс начального и конечного фрагмента строки, в пределах которых и нужно осуществлять поиск подстроки.

'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23

Обратите внимание на то, что вышеприведённая конструкция возвращает

23, а не 0, как было бы, не ограничь мы поиск.

'the happiest person in the whole wide world.'.index('the')
#=> 0

10. Как вставить содержимое переменной в строку, воспользовавшись методом format()?

Метод format() позволяет добиваться результатов, сходных с теми, которые можно получить, применяя f-строки. Правда, я полагаю, что использовать format() не так удобно, так как все переменные приходится указывать в качестве аргументов format().

difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'

11. Как узнать о том, что в строке содержатся только цифры?

Существует метод isnumeric(), который возвращает True в том случае, если все символы, входящие в строку, являются цифрами.

'80000'.isnumeric() #=> True

Используя этот метод, учитывайте то, что знаки препинания он цифрами не считает.

'1.0'.isnumeric() #=> False

12. Как разделить строку по заданному символу?

Здесь нам поможет метод split(), который разбивает строку по заданному символу или по нескольким символам.

'This is great'. split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']

13. Как проверить строку на то, что она составлена только из строчных букв?

Метод islower() возвращает True только в том случае, если строка составлена исключительно из строчных букв.

'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False

14. Как проверить то, что строка начинается со строчной буквы?

Сделать это можно, вызвав вышеописанный метод islower() для первого символа строки.

'aPPLE'[0].islower() #=> True

15. Можно ли в Python прибавить целое число к строке?

В некоторых языках это возможно, но Python при попытке выполнения подобной операции будет выдана ошибка TypeError.

'Ten' + 10 #=> TypeError

16.

Как «перевернуть» строку?

Для того чтобы «перевернуть» строку, её можно разбить, представив в виде списка символов, «перевернуть» список, и, объединив его элементы, сформировать новую строку.

''.join(reversed("hello world"))
#=> 'dlrow olleh'

17. Как объединить список строк в одну строку, элементы которой разделены дефисами?

Метод join() умеет объединять элементы списков в строки, разделяя отдельные строки с использованием заданного символа.

'-'.join(['a','b','c'])
#=> 'a-b-c'

18. Как узнать о том, что все символы строки входят в ASCII?

Метод isascii() возвращает True в том случае, если все символы, имеющиеся в строке, входят в ASCII.

print( 'Â'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True

19. Как привести всю строку к верхнему или нижнему регистру?

Для решения этих задач можно воспользоваться методами upper() и lower(), которые, соответственно, приводят все символы строк к верхнему и нижнему регистрам.

sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'

20. Как преобразовать первый и последний символы строки к верхнему регистру?

Тут, как и в одном из предыдущих примеров, мы будем обращаться к символам строки по индексам. Строки в Python иммутабельны, поэтому мы будем заниматься сборкой новой строки на основе существующей.

animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'

21. Как проверить строку на то, что она составлена только из прописных букв?

Имеется метод isupper(), который похож на уже рассмотренный islower(). Но isupper() возвращает True только в том случае, если вся строка состоит из прописных букв.

'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True

22. В какой ситуации вы воспользовались бы методом splitlines()?

Метод splitlines() разделяет строки по символам разрыва строки.

sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']

23. Как получить срез строки?

Для получения среза строки используется синтаксическая конструкция следующего вида:

string[start_index:end_index:step]

Здесь step — это шаг, с которым будут возвращаться символы строки из диапазона start_index:end_index. Значение step, равное 3, указывает на то, что возвращён будет каждый третий символ.

string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' (каждый 2-й символ)

24. Как преобразовать целое число в строку?

Для преобразования числа в строку можно воспользоваться конструктором str().

str(5) #=> '5'

25. Как узнать о том, что строка содержит только алфавитные символы?

Метод isalpha() возвращает True в том случае, если все символы в строке являются буквами.

'One1'.isalpha() #=> False
'One'.isalpha() #=> True

26. Как в заданной строке заменить на что-либо все вхождения некоей подстроки?

Если обойтись без экспорта модуля, позволяющего работать с регулярными выражениями, то для решения этой задачи можно воспользоваться методом replace().

sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'

27. Как вернуть символ строки с минимальным ASCII-кодом?

Если взглянуть на ASCII-коды элементов, то окажется, например, что прописные буквы имеют меньшие коды, чем строчные. Функция min() возвращает символ строки, имеющий наименьший код.

min('strings') #=> 'g'

28. Как проверить строку на то, что в ней содержатся только алфавитно-цифровые символы?

В состав алфавитно-цифровых символов входят буквы и цифры. Для ответа на этот вопрос можно воспользоваться методом isalnum().

'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False

29. Как удалить пробелы из начала строки (из её левой части), из её конца (из правой части), или с обеих сторон строки?

Здесь нам пригодятся, соответственно, методы lstrip(), rstrip() и strip().

string = '  string of whitespace    '
string.lstrip() #=> 'string of whitespace    '
string.rstrip() #=> '  string of whitespace'
string.strip() #=> 'string of whitespace'

30. Как проверить то, что строка начинается с заданной последовательности символов, или заканчивается заданной последовательностью символов?

Для ответа на этот вопрос можно прибегнуть, соответственно, к методам startswith() и endswith().

city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False

31. Как закодировать строку в ASCII?

Метод encode() позволяет кодировать строки с использованием заданной кодировки. По умолчанию используется кодировка utf-8. Если некий символ не может быть представлен с использованием заданной кодировки, будет выдана ошибка UnicodeEncodeError.

'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Â'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)

32. Как узнать о том, что строка включает в себя только пробелы?

Есть метод isspace(), который возвращает True только в том случае, если строка состоит исключительно из пробелов.

''.isspace() #=> False
' '.isspace() #=> True
'   '. isspace() #=> True
' the '.isspace() #=> False

33. Что случится, если умножить некую строку на 3?

Будет создана новая строка, представляющая собой исходную строку, повторённую три раза.

'dog' * 3
# 'dogdogdog'

34. Как привести к верхнему регистру первый символ каждого слова в строке?

Существует метод title(), приводящий к верхнему регистру первую букву каждого слова в строке.

'once upon a time'.title() #=> 'Once Upon A Time'

35. Как объединить две строки?

Для объединения строк можно воспользоваться оператором +.

'string one' + ' ' + 'string two' 
#=> 'string one string two'

36. Как пользоваться методом partition()?

Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.

sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')

37. Строки в Python иммутабельны. Что это значит?

То, что строки иммутабельны, говорит о том, что после того, как создан объект строки, он не может быть изменён. При «модификации» строк исходные строки не меняются. Вместо этого в памяти создаются совершенно новые объекты. Доказать это можно, воспользовавшись функцией id().

proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440

При конкатенации 'Rise each day before the sun' и ' if its a weekday' в памяти создаётся новый объект, имеющий новый идентификатор. Если бы исходный объект менялся бы, тогда у объектов был бы один и тот же идентификатор.

38. Если объявить одну и ту же строку дважды (записав её в 2 разные переменные) — сколько объектов будет создано в памяти? 1 или 2?

В качестве примера подобной работы со строками можно привести такой фрагмент кода:

animal = 'dog'
pet = 'dog'

При таком подходе в памяти создаётся лишь один объект. Когда я столкнулся с этим в первый раз, мне это не показалось интуитивно понятным. Но этот механизм помогает Python экономить память при работе с длинными строками.

Доказать это можно, прибегнув к функции id().

animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688

39. Как пользоваться методами maketrans() и translate()?

Метод maketrans() позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.

Метод translate() позволяет применить заданную таблицу для преобразования строки.

# создаём отображение
mapping = str.maketrans("abcs", "123S")
# преобразуем строку
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'

Обратите внимание на то, что в строке произведена замена символов a, b, c и s, соответственно, на символы 1, 2, 3 и S.

40. Как убрать из строки гласные буквы?

Один из ответов на этот вопрос заключается в том, что символы строки перебирают, пользуясь механизмом List Comprehension. Символы проверяют, сравнивая с кортежем, содержащим гласные буквы. Если символ не входит в кортеж — он присоединяется к новой строке.

string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'

41.

В каких ситуациях пользуются методом rfind()?

Метод rfind() похож на метод find(), но он, в отличие от find(), просматривает строку не слева направо, а справа налево, возвращая индекс первого найденного вхождения искомой подстроки.

story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39

Итоги

Я часто объясняю одному продакт-менеджеру, человеку в возрасте, что разработчики — это не словари, хранящие описания методов объектов. Но чем больше методов помнит разработчик — тем меньше ему придётся гуглить, и тем быстрее и приятнее ему будет работаться. Надеюсь, теперь вы без труда ответите на рассмотренные здесь вопросы.

Уважаемые читатели! Что, касающееся обработки строк в Python, вы посоветовали бы изучить тем, кто готовится к собеседованию?

ios – автоматическое изменение размера ячейки коллекции не отображается должным образом с минимальным межстрочным интервалом

Задавать вопрос

спросил

Изменено 3 года, 4 месяца назад

Просмотрено 548 раз

У меня есть представление коллекции ячеек с автоматическим размером, в котором мне нужно отображать данные по горизонтали. Все работает нормально, но мне нужно установить интервал 5 пикселей между двумя ячейками, поэтому свойство minimumLineSpacing и проблема началась Моя последняя ячейка не отображается должным образом из-за межстрочного интервала. Вот изображение

Вот код

 расширения TopicVC: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
{
    func collectionView(_ collectionView: UICollectionView, раздел numberOfItemsInSection: Int) -> Int {
        вернуть 5
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, MinimumLineSpacingForSectionAt section: Int) -> CGFloat {
        возврат 5.0
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        пусть ячейка = collectionView.dequeueReusableCell (withReuseIdentifier: HastagCell.identifier, для: indexPath) как! HastagCell
        пусть index = indexPath. row % arrClrFollowTopic.count
        cell.btnHashTag.backgroundColor = Color.custom (шестнадцатеричная строка: arrClrFollowTopic [индекс], альфа: 1,0). значение
        если indexPath.row % 3 == 0
        {
            cell.btnHashTag.setTitle(strTitle: "#Тестирование 123545")
        }
        еще
        {
            cell.btnHashTag.setTitle(strTitle: "#Тестирование")
        }
        обратная ячейка;
    }
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    }
}
 

Вьюдидлоад

 переопределить функцию viewDidLoad() {
        super.viewDidLoad()
        self.objCollectionView.register(HastagCell.nib, forCellWithReuseIdentifier: HastagCell.identifier)
        если пусть collectionViewLayout = self.objCollectionView.collectionViewLayout как? UICollectionViewFlowLayout{
            collectionViewLayout.estimatedItemSize = CGSize.init (ширина: 1,0, высота: 1,0)
        }
        self.objCollectionView. delegate = я
        self.objCollectionView.dataSource = я
        // Выполните любую дополнительную настройку после загрузки представления.
    }
 

Дизайн My Cell с автомакетом

Дизайн макета Collectionview

  • ios
  • swift3
  • uicollectionview
  • авторазмер

10

Вам необходимо установить значение MinimumInteritemSpacing вашего макета таким же, как и MinimumLineSpacing.

Итак, добавьте:

 func collectionView (_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, MinimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    вернуть 5
}
 

5

Все правильно Вы пропустили только одну вещь

Добавьте этот collectionViewLayout Метод делегирования для его решения.

 функция collectionView (коллекцияView: UICollectionView, макет collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    пусть метка = UILabel (кадр: CGRectMake (0, 0, 500, 48))
    label.text = "Текст вашего тега"
    label.font = UIFont.boldSystemFontOfSize(14) // Установите шрифт, какой хотите
    label.sizeToFit()
    вернуть CGSize (ширина: label.frame.size.width + 16, высота: 40)
}
 

или Попробуйте это

 cell.layoutSubviews()
ячейка.setNeedsLayout()
ячейка.layoutIfNeeded()
 

Добавьте это в cellForItemAt indexPath перед возвратом ячейки

4

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

цель c – Как контролировать межстрочный интервал в UILabel

спросил

Изменено 2 года назад

Просмотрено 272к раз

Можно ли уменьшить разрыв между текстом, если он состоит из нескольких строк в UILabel ? Мы можем установить рамку, размер шрифта и количество строк. Я хочу уменьшить разрыв между двумя строками на этой этикетке.

  • объектив-с
  • быстрый
  • xcode
  • uilabel
  • межстрочный интервал

5

В Xcode 6 вы можете сделать это в раскадровке:

14

Я подумал о том, чтобы добавить что-то новое к этому ответу, поэтому я не чувствую себя так плохо … Вот ответ Swift :

 import Cocoa
пусть paragraphStyle = NSMutableParagraphStyle()
paraStyle.lineSpacing = 40
пусть attrString = NSMutableAttributedString (строка: «Быстрый ответ»)
attrString.addAttribute (.paragraphStyle, значение: paragraphStyle, диапазон: NSMakeRange (0, attrString.length))
вар tableViewCell = NSTableCellView()
tableViewCell.textField.attributedStringValue = attrString
 

“Короткий ответ: вы не можете. Чтобы изменить расстояние между строками текста, вам придется создать подкласс UILabel и свернуть свой собственный drawTextInRect или создать несколько меток.

См.: Установить межстрочный интервал UILabel


Это действительно старый ответ, и другие уже добавили новый и лучший способ справиться с этим. Пожалуйста, ознакомьтесь с последними ответами, представленными ниже.

10

Начиная с iOS 6 вы можете установить атрибутивную строку для UILabel. Проверьте следующее:

 NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:label.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineSpacing = интервал;
[attributedString addAttribute: значение NSParagraphStyleAttributeName: диапазон paragraphStyle: NSMakeRange (0, label.text.length)];
label.attributedText = атрибутированная строка;
 

3

Указанные здесь решения мне не подошли. Я нашел немного другой способ сделать это с iOS 6 NSAttributeString:

 myLabel. numberOfLines = 0;
NSString* string = @"Строка с первой строкой. \n Вторая строка. \n Третья строка.";
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.minimumLineHeight = 30.f;
style.maximumLineHeight = 30.f;
NSDictionary *attributtes = @{NSPagraphStyleAttributeName: стиль,};
myLabel.attributedText = [[NSAttributedString alloc] initWithString:string
                                                         атрибуты:атрибуты];
[myLabel sizeToFit];
 

3

Из Interface Builder (Storyboard/XIB):

Программно:

SWIFT 4

Используя расширение метки UIbel

3
    // Передаем значение для любого из обоих параметров и видим результат
    func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) {
        охранять let labelText = self.text else { return }
        пусть paragraphStyle = NSMutableParagraphStyle()
        paraStyle. lineSpacing = межстрочный интервал
        параграфStyle.lineHeightMultiple = lineHeightMultiple
        пусть attributeString: NSMutableAttributedString
        если пусть labelattributedText = self.attributedText {
            attributeString = NSMutableAttributedString (attributedString: labelattributedText)
        } еще {
            attributeString = NSMutableAttributedString (строка: labelText)
        }
        // Атрибут межстрочного интервала
        attributeString.addAttribute (NSAttributedStringKey.paragraphStyle, значение: paragraphStyle, диапазон: NSMakeRange (0, attributeString.length))
        self.attributedText = атрибутированная строка
    }
}
 

Теперь вызовите функцию расширения

 let label = UILabel()
let stringValue = "Как\nуправлять\nмежстрочным интервалом\nв UILabel"
// Передать значение для любого одного аргумента - lineSpacing или lineHeightMultiple
label.setLineSpacing(lineSpacing: 2.0) . // попробовать значения от 1,0 до 5,0
// или попробуйте lineHeightMultiple
//label. setLineSpacing(lineHeightMultiple = 2.0) // попробовать значения от 0,5 до 2,0
 

Или с помощью экземпляра метки (просто скопируйте и выполните этот код, чтобы увидеть результат)

 let label = UILabel()
let stringValue = "Как\nуправлять\nмежстрочным интервалом\nв UILabel"
пусть attrString = NSMutableAttributedString (строка: stringValue)
стиль var = NSMutableParagraphStyle()
style.lineSpacing = 24 // изменить межстрочный интервал между абзацами, например, 36 или 48
style.minimumLineHeight = 20 // изменить межстрочный интервал между каждой строкой, например, 30 или 40
// Атрибут межстрочного интервала
attrString.addAttribute (NSAttributedStringKey.paragraphStyle, значение: стиль, диапазон: NSRange (местоположение: 0, длина: stringValue.characters.count))
// Атрибут интервала между символами
attrString.addAttribute (NSAttributedStringKey.kern, значение: 2, диапазон: NSMakeRange (0, attrString.length))
label.attributedText = строка атрибута
 

Swift 3

 пусть метка = UILabel()
let stringValue = "Как\nуправлять\nмежстрочным интервалом\nв UILabel"
пусть attrString = NSMutableAttributedString (строка: stringValue)
стиль var = NSMutableParagraphStyle()
style. lineSpacing = 24 // изменить межстрочный интервал между абзацами, например, 36 или 48
style.minimumLineHeight = 20 // изменить межстрочный интервал между каждой строкой, например, 30 или 40
attrString.addAttribute (NSPagraphStyleAttributeName, значение: стиль, диапазон: NSRange (местоположение: 0, длина: stringValue.characters.count))
label.attributedText = строка атрибута
 

2

Я сделал это простое расширение, которое мне очень подходит:

 extension UILabel {
    функция setLineHeight (lineHeight: CGFloat) {
        пусть paragraphStyle = NSMutableParagraphStyle()
        paraStyle.lineSpacing = 1.0
        paraStyle.lineHeightMultiple = высота строки
        paraStyle.alignment = self.textAlignment
        пусть attrString = NSMutableAttributedString()
        если (self.attributedText != ноль) {
            attrString.append(self.attributedText!)
        } еще {
            attrString.append(NSMutableAttributedString(строка: self. text!))
            attrString.addAttribute (NSAttributedStringKey.font, значение: self.font, диапазон: NSMakeRange (0, attrString.length))
        }
        attrString.addAttribute (NSAttributedStringKey.paragraphStyle, значение: paragraphStyle, диапазон: NSMakeRange (0, attrString.length))
        self.attributedText = attrString
    }
}
 

Скопируйте это в файл, чтобы вы могли использовать его следующим образом

 myLabel.setLineHeight(0.7)
 

8

Теперь в iOS 6 есть альтернативный ответ, который заключается в установке атрибута Text на метке с помощью NSAttributedString с соответствующими стилями абзаца. См. этот ответ о переполнении стека для получения подробной информации о высоте строки с NSAttributedString:

Основной текст – высота строки NSAttributedString сделана правильно?

Вот класс, который подкласс UILabel имеет свойство line-height: https://github.com/LemonCake/MSLabel

2

В Swift и как функция, вдохновленная DarkDust

 // Использование: setTextWithLineSpacing(myEpicUILabel,text:"Hello",lineSpacing:20)
func setTextWithLineSpacing (метка: UILabel, текст: строка, lineSpacing: CGFloat)
{
    пусть paragraphStyle = NSMutableParagraphStyle()
    paraStyle. lineSpacing = межстрочный интервал
    пусть attrString = NSMutableAttributedString (строка: текст)
    attrString.addAttribute (NSAttributedString.Key.paragraphStyle, значение: paragraphStyle, диапазон: NSMakeRange (0, attrString.length))
    label.attributedText = строка атрибута
}
 

Согласно ответу @Mike, уменьшение lineHeightMultiple является ключевым моментом. Пример ниже, у меня это работает хорошо:

 NSString* text = label.text;
CGFloat textWidth = [размер текстаWithAttributes:@{NSFontAttributeName: label.font}].width;
если (textWidth > label.frame.size.width) {
  NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
  параграф.выравнивание = NSTextAlignmentCenter;
  para.lineSpacing = 1.0f;
  para.lineHeightMultiple = 0,75; // Уменьшить это значение !!!
  NSMutableAttributedString* attrText = [[NSMutableAttributedString alloc] initWithString:text];
  [attrText addAttribute: значение NSParagraphStyleAttributeName: диапазон абзаца: NSMakeRange (0, text. length)];
  label.attributedText = attrText;
}
 

SWIFT 3 полезное расширение для более удобной установки интервала между строками 🙂

 расширение UILabel
{
    функция setLineHeight (lineHeight: CGFloat)
    {
        пусть текст = self.text
        если пусть текст = текст
        {
            пусть attributeString = NSMutableAttributedString (строка: текст)
            пусть стиль = NSMutableParagraphStyle()
           style.lineSpacing = высота строки
           attributeString.addAttribute (NSPagraphStyleAttributeName,
                                        значение: стиль,
                                        диапазон: NSMakeRange(0, text.characters.count))
           self.attributedText = атрибутная строка
        }
    }
}
 

0

Я нашел способ, с помощью которого вы можете установить реальную высоту строки (не фактор), и он даже отображает в реальном времени в Interface Builder . Просто следуйте инструкциям ниже. Код написан на Swift 4 .


Шаг №1: Создайте файл с именем DesignableLabel.swift и вставьте следующий код:

 import UIKit
@IBDesignable
класс DesignableLabel: UILabel {
    @IBInspectable var lineHeight: CGFloat = 20 {
        сделалSet {
            пусть paragraphStyle = NSMutableParagraphStyle()
            paraStyle.minimumLineHeight = высота строки
            paraStyle.maximumLineHeight = высота строки
            paraStyle.alignment = self.textAlignment
            пусть attrString = NSMutableAttributedString (строка: текст!)
            attrString.addAttribute (NSAttributedStringKey.font, значение: шрифт, диапазон: NSRange (местоположение: 0, длина: attrString.length))
            attrString.addAttribute (NSAttributedStringKey.paragraphStyle, значение: paragraphStyle, диапазон: NSRange (местоположение: 0, длина: attrString.length))
            атрибуттекст = строка атрибута
        }
    }
}
 

Шаг № 2: Поместите UILabel в раскадровку/XIB и установите его класс DesignableLabel . Подождите, пока ваш проект будет собран (сборка должна завершиться успешно!).


Шаг 3: Теперь вы должны увидеть новое свойство на панели свойств под названием «Высота линии». Просто установите значение, которое вам нравится, и вы сразу же увидите результаты!

Вот подкласс UILabel, который устанавливает lineHeightMultiple и гарантирует, что внутренняя высота достаточно велика, чтобы не обрезать текст.

 @IBDesignable
Метка класса: UILabel {
    переопределить var innerContentSize: CGSize {
        размер переменной = super.intrinsicContentSize
        пусть padding = (1.0 - lineHeightMultiple) * font.pointSize
        размер.высота += отступ
        возвращаемый размер
    }
    переопределить текст var: String? {
        сделалSet {
            обновитьАтрибутедтекст()
        }
    }
    @IBInspectable var lineHeightMultiple: CGFloat = 1.0 {
        сделалSet {
            обновитьАтрибутедтекст()
        }
    }
    частная функция updateAttributedText() {
        пусть paragraphStyle = NSMutableParagraphStyle()
        параграфStyle. lineHeightMultiple = lineHeightMultiple
        attributeText = NSAttributedString (строка: текст ?? "", атрибуты: [
            .font: шрифт,
            .paragraphStyle: стиль параграфа,
            .foregroundColor: текстовый цвет
        ])
        недействительныйIntrinsicContentSize()
    }
}
 

3

Расширение Swift 3:

 импортировать UIKit
    
расширение UILabel {
  func setTextWithLineSpacing (текст: String, lineHeightMultiply: CGFloat = 1.3) {
    пусть paragraphStyle = NSMutableParagraphStyle()
    paraStyle.lineHeightMultiple = lineHeightMultiply
    paraStyle.alignment = .center
    пусть attributeString = NSMutableAttributedString (строка: текст)
    attributeString.addAttribute (NSPagraphStyleAttributeName, значение: paragraphStyle, диапазон: NSRange (местоположение: 0, длина: attributeString.length))
    self.attributedText = атрибутированная строка
  }
}
 

1

В Swift 2. 0…

Добавить расширение:

 extension UIView {
    func attributeWithLineHeight (шрифт: String, цвет: UIColor, fontSize: CGFloat, kern: Double, lineHeightMultiple: CGFloat) -> [String: NSObject] {
        пусть titleParagraphStyle = NSMutableParagraphStyle()
        titleParagraphStyle.lineHeightMultiple = lineHeightMultiple
        пусть атрибут = [
            NSForegroundColorAttributeName: цвет,
            NSKernAttributeName: керн,
            NSFontAttributeName: UIFont (имя: шрифт, размер: fontSize)!,
            NSParagraphStyleAttributeName: titleParagraphStyle
        ]
        возвращаемый атрибут
    }
}
 

Теперь просто установите свой UILabel как attributeText:

 self.label.attributedText = NSMutableAttributedString(строка: "SwiftExample", атрибуты: attributeWithLineHeight("SourceSans-Regular", color: UIColor.whiteColor(), fontSize: 20, kern : 2.0, lineHeightMultiple: 0.5))
 

Очевидно, я добавил кучу параметров, которые вам могут не понадобиться. Поиграйтесь – не стесняйтесь переписывать метод – я искал это в куче разных ответов, поэтому решил опубликовать все расширение на случай, если оно кому-то поможет… -rab

Swift3. В расширении UITextView или UILabel добавьте эту функцию:

Я добавил код для сохранения текущего текста с атрибутами, если вы уже используете строки с атрибутами в представлении (вместо их перезаписи).

 функция setLineHeight(_ lineHeight: CGFloat) {
    охранять let text = self.text, let font = self.font else { return }
    пусть paragraphStyle = NSMutableParagraphStyle()
    paraStyle.lineSpacing = 1.0
    paraStyle.lineHeightMultiple = высота строки
    paraStyle.alignment = self.textAlignment
    переменная attrString:NSMutableAttributedString
    если пусть атрибут = self.attributedText {
        attrString = NSMutableAttributedString (attributedString: атрибут)
    } еще {
        attrString = NSMutableAttributedString (строка: текст)
        attrString.addAttribute (NSFontAttributeName, значение: шрифт, диапазон: NSMakeRange (0, attrString. length))
    }
    attrString.addAttribute (NSPagraphStyleAttributeName, значение: paragraphStyle, диапазон: NSMakeRange (0, attrString.length))
    self.attributedText = attrString
}
 

Другой ответ… Если вы передаете строку программно, вам нужно передать строку с атрибутами вместо обычной строки и изменить ее стиль. (iOS10)

 NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:@" Ваша \nобычная\nстрока"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[стиль setLineSpacing:4];
[attrString addAttribute: NSParagraphStyleAttributeName
                   значение:стиль
                   диапазон: NSMakeRange(0, attrString.length)];
_label.attributedText = attrString;
 

Это должно помочь. Затем вы можете назначить свою метку этому пользовательскому классу в раскадровке и использовать его параметры непосредственно в свойствах:

 open class SpacingLabel : UILabel {
    @IBInspectable открыть var lineHeight: CGFloat = 1 {
        сделалSet {
            пусть paragraphStyle = NSMutableParagraphStyle()
            paraStyle. lineSpacing = 1.0
            paraStyle.lineHeightMultiple = self.lineHeight
            paraStyle.alignment = self.textAlignment
            пусть attrString = NSMutableAttributedString (строка: self.text!)
            attrString.addAttribute (NSAttributedStringKey.font, значение: self.font, диапазон: NSMakeRange (0, attrString.length))
            attrString.addAttribute (NSAttributedStringKey.paragraphStyle, значение: paragraphStyle, диапазон: NSMakeRange (0, attrString.length))
            self.attributedText = attrString
        }
    }
}
 

2

Расширение этикетки Swift 4. Создание NSMutableAttributedString перед передачей в функцию на случай, если для атрибутированного текста требуются дополнительные атрибуты.

 расширение UILabel {
    func setLineHeightMultiple (по высоте: CGFloat, withAttributedText attributeText: NSMutableAttributedString) {
        пусть paragraphStyle = NSMutableParagraphStyle()
        paraStyle. lineSpacing = 1.0
        параграфStyle.lineHeightMultiple = высота
        параграфStyle.alignment = textAlignment
        attributeText.addAttribute (.paragraphStyle, значение: paragraphStyle, диапазон: NSRange (местоположение: 0, длина: attributeText.length - 1))
        self.attributedText = атрибутированный текст
    }
}
 

Этот код работал у меня (на iOS 7 и iOS 8 точно).

 _label.numberOfLines=2;
_label.textColor=[UIColor whiteColor];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
параграфStyle.lineHeightMultiple=0,5;
параграфStyle.alignment = NSTextAlignmentCenter;
paraStyle.lineSpacing = 1,0;
NSDictionary *nameAttributes=@{
                               NSParagraphStyleAttributeName : стиль параграфа,
                               NSBaselineOffsetAttributeName:@2.0
                               };
NSAttributedString *string=[[NSAttributedString alloc] initWithString:@"22m\nago" атрибуты:nameAttributes];
_label.attributedText=строка;
 

Вот мое решение в swift. Подкласс должен работать как для свойства attributeText и text, так и для characterSpacing + lineSpacing. Он сохраняет интервал, если установлена ​​новая строка или атрибутированная строка.

 открытый класс UHBCustomLabel : UILabel {
 @IBInspectable открыть var characterSpacing: CGFloat = 1 {
 сделалSet {
 обновитьWithSpacing()
 }
 }
 @IBInspectable открыть var lines_spacing: CGFloat = -1 {
 сделалSet {
 обновитьWithSpacing()
 }
 }
 open override var text: String? {
 набор {
 super.text = новое значение
 обновитьWithSpacing()
 }
 получать {
 вернуть супер.текст
 }
 }
 открыть переопределение var attributeText: NSAttributedString? {
 набор {
 super.attributedText = новое значение
 обновитьWithSpacing()
 }
 получать {
 вернуть super.attributedText
 }
 }
 функция updateWithSpacing() {
 пусть attributeString = self.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *