Swift에서 UILabel에 동적으로 높이를 지정하려면 UILabel의 frame 속성을 활용하면 됩니다. frame은 CGRect를 사용해 생성할 수 있으며, 이를 통해 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 방식과 오토레이아웃 방식을 선택해 활용하시기 바랍니다.