Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift에서 코드로 UILabel에 동적 높이를 설정하는 방법

Swift에서 UILabel에 동적으로 높이를 지정하려면 UILabel의 frame 속성을 활용하면 됩니다. frameCGRect를 사용해 생성할 수 있으며, 이를 통해 X 좌표, Y 좌표, 너비(width), 높이(height) 등 다양한 값을 자유롭게 설정할 수 있습니다.

기본적인 UILabel 생성 및 추가하기

먼저 간단한 레이블을 만들고 현재 뷰의 서브뷰(subview)로 추가하는 예제를 살펴보겠습니다.

let label = UILabel()
label.frame = CGRect(x: 10, y: 40, width: 200, height: 50)
label.backgroundColor = colorLiteral(red: 0.7450980544, green: 0.1568627506, blue: 0.07450980693, alpha: 1)
label.textColor = colorLiteral(red: 0.05882352963, green: 0.180392161, blue: 0.2470588237, alpha: 1)
label.text = "Custom label"
self.view.addSubview(label)

위 코드를 실행하면 화면에 배경색과 텍스트 색상이 지정된 커스텀 레이블이 나타납니다.

재사용 가능한 함수로 만들기

매번 같은 코드를 반복해서 작성하는 대신, 레이블 생성 로직을 하나의 함수로 묶어 재사용성을 높일 수 있습니다. 위치와 크기를 파라미터로 전달받아 원하는 곳에 원하는 크기의 레이블을 손쉽게 생성할 수 있습니다.

func makeLabel(atX x: Double, andY y: Double, width: Double, height: Double) -> UILabel {
    let label = UILabel()
    label.frame = CGRect(x: x, y: y, width: width, height: height)
    label.backgroundColor = colorLiteral(red: 0.7450980544, green: 0.1568627506, blue: 0.07450980693, alpha: 1)
    label.textColor = colorLiteral(red: 0.05882352963, green: 0.180392161, blue: 0.2470588237, alpha: 1)
    label.text = "Custom label"
    return label
}

뷰 컨트롤러에서 활용하기

이렇게 만든 함수는 뷰 컨트롤러 내부에서 아래와 같이 한 줄로 호출하여 사용할 수 있습니다.

self.view.addSubview(makeLabel(atX: 10, andY: 100, width: 250, height: 100))

실제 기기나 시뮬레이터에서 실행하면 지정한 좌표와 크기대로 레이블이 화면에 표시되는 것을 확인할 수 있습니다.

추가 팁: Extension 활용

더 나아가 이 로직을 UILabel의 extension으로 구현하면 프로젝트 전반에서 더욱 편리하게 재사용할 수 있습니다. 또한 Auto Layout을 함께 사용하면 텍스트 길이에 따라 레이블 높이가 자동으로 조절되도록 설정할 수도 있으니, 상황에 맞게 frame 방식과 오토레이아웃 방식을 선택해 활용하시기 바랍니다.