기능 추가 → 사진 및 아이콘 설정
이전에 만든 기능은 버튼을 눌러도 텍스트 필드(Text Field)의 값이 바뀌지 않아서 지우고 다시 써야하는 불편함이 있어요.
이제 초기화 버튼을 만들어서 더욱 편리하게 앱을 만들거에요.
또한, 다양한 기능을 알기 위해 증가, 감소 버튼을 만들어서 같이 적용해볼게요.
Xcode를 실행하고 아래 두 가지 방법 중 하나로 프로젝트를 불러와요.
Xcode 실행 후 가져오기가장 최근에 실행했던 프로젝트라면 Xcode 실행 시 바로 확인하고 실행할 수 있어요.

또는 파일위치를 알고 있으면 프로젝트 파일 더블 클릭으로 바로 실행시킬 수 있어요.

먼저 다음과 같이 버튼(Button)과 레이블(Label)을 추가해요.
버튼과 레이블은 우측 상단의 + 버튼을 통해 추가할 수 있어요.

이제 이전 주차 내용을 참고해서 요소를 연결해줘요.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblNumber: UILabel!
@IBOutlet weak var lblHello: UILabel!
@IBOutlet weak var txtName: UITextField!
@IBAction func btnUp(_ sender: UIButton) {
}
@IBAction func btnDown(_ sender: UIButton) {
}
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hi, " + txtName.text!
}
@IBAction func btnReset(_ sender: UIButton) {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}

각 부분에 맞게 코드를 작성하고 기능이 정상적으로 동작하는지 확인해요.
import UIKit
class ViewController: UIViewController {
var x : Int = 0
@IBOutlet weak var lblNumber: UILabel!
@IBOutlet weak var lblHello: UILabel!
@IBOutlet weak var txtName: UITextField!
@IBAction func btnUp(_ sender: UIButton) {
x += 1
lblNumber.text = "\(x)" // 또는 String(x)
}
@IBAction func btnDown(_ sender: UIButton) {
x -= 1
lblNumber.text = "\(x)"
}
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hi, " + txtName.text!
}
@IBAction func btnReset(_ sender: UIButton) {
lblHello.textColor = .systemOrange
lblHello.text = "안녕하세요!"
txtName.text = ""
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}

실행해서 확인해요.

초기화 및 증가 감소 버튼도 기능을 확인해요.

잘 동작하는 것을 확인할 수 있어요.
UILabel 관련 함수 정리추가적으로 도움이 될만한 UILabel에서 많이 사용하는 함수들이에요.
text : 텍스트 내용 설정하기UILabel의 가장 기본적인 속성으로, 표시할 텍스트를 설정하는 데 사용해요.
let label = UILabel()
label.text = "Hello, World!"
font: 텍스트의 폰트 설정하기텍스트의 폰트 스타일과 크기를 지정할 수 있어요.
UIFont를 사용해 폰트를 설정해요.
label.font = UIFont.systemFont(ofSize: 20)
textColor: 텍스트 색상 설정하기UILabel의 텍스트 색상을 변경하려면 textColor 속성을 사용해요.
label.textColor = UIColor.red
textAlignment: 텍스트 정렬 설정하기텍스트를 왼쪽, 가운데, 오른쪽으로 정렬할 수 있어요.
label.textAlignment = .center
numberOfLines: 텍스트의 최대 줄 수 설정하기텍스트가 여러 줄로 표시될 때 최대 줄 수를 지정할 수 있어요. 0으로 설정하면 텍스트가 제한 없이 여러 줄로 표시돼요.
label.numberOfLines = 2
lineBreakMode: 텍스트 줄 바꿈 방식 설정하기긴 텍스트가 잘릴 때, 텍스트가 어떻게 처리될지 결정하는 속성이에요. 예를 들어, 단어 단위로 줄을 바꾸거나, 줄임표(...)로 텍스트를 자를 수 있어요.
label.lineBreakMode = .byWordWrapping
adjustsFontSizeToFitWidth: 텍스트 크기 자동 조정하기UILabel의 너비에 맞게 텍스트의 폰트 크기를 자동으로 조정할 수 있어요. 텍스트가 잘리지 않도록 폰트 크기를 줄여주는 유용한 기능이에요.
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5 // 폰트 크기의 최소 비율 설정
baselineAdjustment: 텍스트 기준선 조정하기텍스트의 기준선을 위나 아래로 이동시킬 수 있는 속성이에요. 텍스트의 세부적인 위치를 조정하고 싶을 때 유용해요.
label.baselineAdjustment = .alignCenters
shadowColor & shadowOffset: 텍스트 그림자 효과 적용하기UILabel에 그림자 효과를 추가하여 텍스트를 더 강조하거나 입체감 있게 만들 수 있어요.
label.shadowColor = UIColor.gray
label.shadowOffset = CGSize(width: 2, height: 2)
attributedText: 스타일이 적용된 텍스트 설정하기attributedText를 사용하면 텍스트의 일부에 다른 스타일을 적용할 수 있어요. 예를 들어, 일부 텍스트에 굵은 글씨나 색상을 다르게 설정할 수 있어요.
let attributes: [NSAttributedString.Key: Any] = [
.foregroundColor: UIColor.blue,
.font: UIFont.boldSystemFont(ofSize: 18)
]
let attributedString = NSAttributedString(string: "Bold Blue Text", attributes: attributes)
label.attributedText = attributedString
isEnabled: UILabel의 활성화 여부 설정하기UILabel은 일반적으로 상호작용을 하지 않지만, 일부 상황에서는 isEnabled 속성을 통해 활성화 또는 비활성화 상태를 설정할 수 있어요.
label.isEnabled = false // 텍스트는 보이지만 상호작용은 불가능
highlightedTextColor: 강조 텍스트 색상 설정하기UILabel이 강조 상태일 때 텍스트의 색상을 변경할 수 있는 속성이에요. 주로 사용자 상호작용 시 사용해요.
label.highlightedTextColor = UIColor.green
이제 앱에 사진과 아이콘을 추가해볼거에요.
이미지가 들어가면 사용자가 앱을 더욱 직관적이고 간편하게 사용할 수 있어요.
AssetsXcode 프로젝트에서 아래 사진처럼 아이콘을 클릭하면 Assets 메뉴가 나타나요.

이제 위 사진의 파란 박스 부분에 원하는 이미지를 드래그 앤 드롭해서 다음과 같이 추가할 수 있어요.

이제 다시 Main으로 돌아와서 Image View를 추가하고 우측의 Inspector 창에서 Image를 클릭하면 불러온 이미지가 나타나요.
해당 이미지를 클릭해서 다음과 같이 추가해요.

주의할 점은 우측 Content Mode를 Aspect Fit으로 설정해서 종횡비가 바뀌지 않도록 지정해줘야 해요.

아이콘 추가도 이미지 추가와 비슷한 방식으로 할 수 있어요.
먼저 1024 X 1024 크기의 아이콘 이미지를 구한 후에 AppIcon 부분에 드래그 앤 드롭 해주면 끝나요.
