sizeToFit을 사용하지 않고 UILAbel의 문자를 위로 정렬합니다.

개요


iOS 개발을 진행하면 문자의 배열을 위로 올리고 싶을 때가 있다.
예를 들어 다음과 같은 경우.

위의 그림에서 보듯이 UICollectionView를 사용하여 칸이 가로로 배열된 화면을 만들었습니다.각 셀에 UILAbel이 있다고 가정하면 UILAbel은 최대 두 줄 높이입니다.
나는 일반적으로 설치하면 문자의 맨 위 위치가 흐트러질 것이라고 생각한다.
이것을 조정하기 위해 UILAbel의 속성을 찾아보니 왼쪽 정렬과 중앙 정렬이 있는데 위 정렬이 없습니다.
솔직히 나는 불친절하다.(추가 Apple 속성,,,)
따라서 다음은 이 문제에 대한 처리 방법을 적겠습니다.

원인


왜냐하면 UILAbel의 문자 높이 위치는 UILAbel 높이의 중앙으로 수정되어야 하기 때문이다.
문자가 모두 1행일 때, 그 1행은 UILAbel의 중앙으로, 2행일 때, 위의 줄과 아래의 줄의 간격은 UILAbel의 중앙으로 수정된다.

따라서 문자를 위로 정렬하려면 UILAbel 높이에서 조정해야 합니다.

메서드 1: sizeToFit()


UILAbel의 방법 중 하나는 sizeToFit()입니다.즉, UILAbel의 폭과 높이가 문자에 적합한 크기로 조정됩니다.
이걸로 UILAbel의 높이를 조정한 다음 UILAbel이 위로 정렬되면 문자도 위로 정렬됩니다.
sampleCell.swift
func setupLabelFrame() {
    var fixedFrame = self.label.frame
    self.label.sizeToFit()
    fixedFrame.size.height = self.label.frame.size.height
    self.label.frame = fixedFrame
}
그러나 이런 방법은 문자 내용이 동태적으로 변화하는 상황에서 매번 높이와 위치를 조정해야 한다.

방법 2: AutoLayout+numberOfLines=0


내가 자주 사용하는 방법은 바로 여기다.
size ToFit처럼 매번 조정할 필요가 없고 원리적으로도 이해하기 쉬우므로 추천합니다.
  • UILAbel에서 AutoLayout을 사용하여 왼쪽, 오른쪽 및 위쪽 Constraint를 추가합니다
  • UILAbel의 number OfLines는 0입니다

  • 3. 먼저 최대 행의 높이로 표시한 다음 Constraint를 추가하여 UILAbel 높이의 최대값으로 만듭니다.

    이렇게 하면 문자가 위로 정렬됩니다.
    원리를 설명하자면, 1에서 UILAbel의 연장 방향을 아래 방향으로 제한하고, 2는 문자의 양에 따라 자동으로 높이를 조절하며, 3은 그 연장 폭의 최대치를 결정한다.
    그러면 문자에 따라 UILAbel의 크기가 자동으로 결정됩니다.

    끝날 때


    솔직히 이런 우회 설치를 하지 않더라도 UILAbel의 속성에 준비만 하면 해결할 수 있다
    하지만 수요가 있는데도 이루어지지 않는 이유가 있겠는가.
    어쨌든 오늘 이맘때 iOS 개발에 비결이 있다고 생각해요...

    좋은 웹페이지 즐겨찾기