UIKit Framework
ㄴ UILabel ㄴ UIScrollView
ㄴ UIImageView ㄴ UIPickerView
ㄴ UITextFeild ㄴ UITableView
ㄴ UIButton
ㄴ UISwitch
ㄴ UISlider
ㄴ UISegmentedControl
// UILabel 인스턴스 생성
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
label.text = "안녕하세요!"
label.textColor = .black
label.font = UIFont.systemFont(ofSize: 20)
label.textAlignment = .center
// 뷰에 라벨 추가
self.view.addSubview(label)
// UIImageView 인스턴스 생성
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
// 이미지 설정
let image = UIImage(named: "myImage")
imageView.image = image
// contentMode 설정
imageView.contentMode = .scaleAspectFit
// 뷰에 이미지 뷰 추가
self.view.addSubview(imageView)
// UITextField 인스턴스 생성
let textField = UITextField(frame: CGRect(x: 20, y: 100, width: 200, height: 30))
// delegate 설정
textField.delegate = self
// placeholder 설정
textField.placeholder = "이름을 입력하세요"
// 뷰에 텍스트 필드 추가
self.view.addSubview(textField)
// UIButton 인스턴스 생성
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
button.setTitle("버튼", for: .normal)
button.setTitleColor(.white, for: .normal)
button.backgroundColor = .blue
// 버튼 액션 지정
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
// 뷰에 버튼 추가
self.view.addSubview(button)
// 버튼 액션 처리 함수
@objc func buttonAction() {
print("버튼이 눌렸습니다.")
}
onTintColor // UISwitch의 ON 상태일 때의 배경 색상
// 사용자가 UISwitch를 ON 상태로 변경했을 때 배경에 적용되는 색상을 설정
<예시>
myView.onTintColor = UIColor.green
thumbTintColor // UISwitch의 스위치 부분(thumb)의 색상
// UISwitch가 ON/OFF 상태에 따라 Thumb가 좌우로 이동하면서 표시되는데, 이 Thumb에 적용되는 색상을 설정
<예시>
myView.thumbTintColor = UIColor.blue
let mySwitch = UISwitch()
mySwitch.isOn = true
mySwitch.onTintColor = UIColor.green
mySwitch.thumbTintColor = UIColor.white
mySwitch.addTarget(self, action: #selector(switchToggled), for: .valueChanged)
@objc func switchToggled() {
print("switch value changed")
}
let slider = UISlider()
slider.minimumValue = 0.0
slider.maximumValue = 100.0
slider.value = 50.0
slider.addTarget(self, action: #selector(sliderValueChanged), for: .valueChanged)
@objc func sliderValueChanged() {
let value = slider.value
// 슬라이더 값 변경 시 수행할 작업
}
let segmentedControl = UISegmentedControl(items: ["옵션1", "옵션2", "옵션3"])
segmentedControl.selectedSegmentIndex = 0
segmentedControl.addTarget(self, action: #selector(segmentedControlValueChanged), for: .valueChanged)
@objc func segmentedControlValueChanged() {
let selectedIndex = segmentedControl.selectedSegmentIndex
// 선택된 세그먼트에 대한 작업 수행
}
// UIScrollViewDelegate 프로토콜 사용
class ViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var imageView: UIImageView!
// UIScrollView 인스턴스 생성
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRect(origin: CGPoint(x: 0, y: 300), size: CGSize(width: view.bounds.width, height: 300)))
scrollView.delegate = self
let image = UIImage(systemName: "folder.fill")
imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFit
imageView.frame = CGRect(origin: .zero, size: CGSize(width: 100, height: 100))
scrollView.addSubview(imageView)
scrollView.contentSize = CGSize(width: view.bounds.width*2, height: 300*2) //ScrollView 크기 설정
scrollView.minimumZoomScale = 0.5 // Zoom 기능 축소 설정
scrollView.maximumZoomScale = 2.0 // Zoom 기능 확대 설정
view.addSubview(scrollView)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
let pickerView = UIPickerView()
let data = ["항목1", "항목2", "항목3"]
override func viewDidLoad() {
super.viewDidLoad()
pickerView.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
self.view.addSubview(pickerView)
pickerView.dataSource = self
pickerView.delegate = self
}
// 데이터 소스 메서드
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.count
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// 델리게이트 메서드
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
// 선택된 값 사용
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let selectedValue = data[row]
print("선택", selectedValue)
}
}
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
// 데이터 소스
let data = ["Apple", "Banana", "Cherry", "Durian", "Elderberry"]
// 테이블 뷰
var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// 테이블 뷰 초기화
tableView = UITableView(frame: view.bounds, style: .plain)
tableView.delegate = self
tableView.dataSource = self
// 테이블 뷰 등록
view.addSubview(tableView)
}
// 테이블 뷰 셀 개수 반환
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
// 테이블 뷰 셀 설정
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
cell.textLabel?.text = data[indexPath.row]
return cell
}
// 테이블 뷰 셀 선택 처리
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// 선택된 셀의 항목 출력
print("선택된 항목: \(data[indexPath.row])")
}
}
class MyCollectionViewCell: UICollectionViewCell {
let imageView = UIImageView()
override init(frame: CGRect) {
super.init(frame: frame)
// 이미지 뷰 설정
imageView.frame = contentView.bounds
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
contentView.addSubview(imageView)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
let images: [UIImage] = [
UIImage(systemName: "1.lane")!,
UIImage(systemName: "2.lane")!,
UIImage(systemName: "3.lane")!,
UIImage(systemName: "3.lane")!,
UIImage(systemName: "3.lane")!,
UIImage(systemName: "3.lane")!,
// 필요한 만큼 이미지를 추가할 수 있습니다.
]
override func viewDidLoad() {
super.viewDidLoad()
// 컬렉션 뷰 설정
collectionView.dataSource = self
collectionView.delegate = self
collectionView.register(MyCollectionViewCell.self, forCellWithReuseIdentifier: "MyCell")
collectionView.backgroundColor = .white
view.addSubview(collectionView)
// 컬렉션 뷰 레이아웃 설정
let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout?.minimumInteritemSpacing = 10
layout?.minimumLineSpacing = 10
layout?.itemSize = CGSize(width: 100, height: 100)
// 컬렉션 뷰 위치 및 크기 설정
collectionView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
collectionView.topAnchor.constraint(equalTo: view.topAnchor),
collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
}
// MARK: - UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! MyCollectionViewCell
cell.imageView.image = images[indexPath.item]
return cell
}
// MARK: - UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 100, height: 100)
}
}
extension ViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
}