터치
아이폰은 최대 5개의 터치를 지원한다.
import UIKit
class FingerGameView: UIView {
//터치 시작
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
//터치 이동
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
}
//터치 끝
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
}
//터치가 비정상적인 이유로 끝남
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
}
}
진동
// 가벼운 물리적 충돌을 묘사
let impactLight = UIImpactFeedbackGenerator(style: .light)
impactLight.impactOccurred()
// 무거운 물리적 충돌을 묘사
let impactHeavy = UIImpactFeedbackGenerator(style: .heavy)
impactHeavy.impactOccurred()
// 어떤 요소를 선택하거나 했을 때 사용
let selection = UISelectionFeedbackGenerator()
selection.selectionChanged()
//notification 은 한 번만 선언해도 됨!
let noti = UINotificationFeedbackGenerator()
//액션의 결과에 따라 각각 성공, 에러, 주의를 위한 진동
noti.notificationOccurred(.success) // 성공
noti.notificationOccurred(.error) // 에러
noti.notificationOccurred(.warning) // 주의
애니메이션
무엇을 어느 상태에서 어디로
UIView.animate(withDuration: 5) { // 5는 애니메이션이 움직일 시간 길이입니다.
// 애니메이션이 끝난 후 보였으면 하는 결과물 블록
view.frame.height = 100
}
UIView.animate() 함수 블럭에 들어갈 수 있는 요소들
- 뷰의 frame, bounds, center 등 뷰의 프레임 정보
- 뷰의 backgroundColor, alpha 등의 뷰의 배경색 및 투명도
- 뷰를 회전하거나 확대하는데 쓰이는 transform
(한개의 프레임은 보통 60FPS)
애니메이션을 구현하는 다른 방법
- Timer 를 사용하여 바꿔줄 수도있다.
- UIView.transition
- 외부 라이브러리
타이머 관련 함수는 분리
+가독성
시계 깜빡깜빡 -> alpha 값 변경 애니메이션
func blinkTimerLabel() {
self.secondsLabel.alpha = 1
UIView.animate(withDuration: 0.5) {
self.secondsLabel.alpha = 0
}
}
alpha 값이란? 투명도
https://developer.apple.com/documentation/uikit/uiview/1622417-alpha
Apple Developer Documentation
developer.apple.com
Assets 에 자주 쓸 색 추가하기 - Color Set
- Color Set
- Appearance → None
- Universal 이라고 표시된 흰색 네모 클릭 후, 오른쪽 하단에 Show Color Panel 클릭
- 스포이드 버튼 눌러서 원하는 색 선택하기
- 색깔 이름 정해주기
- 이름으로 색 사용
UIColor(named: "myRed")
동그라미 뷰 만들기
여기서는 터치 시 동그라미 뷰를 생성
동그라미: width / 2 = height / 2 = cornerRaduis
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//터치는 생각해보면 동시에 여러 개가 가능합니다!(멀티터치)
for touch in touches {
//동그라미 뷰 만들기
let view = UIView(frame: CGRect(x: 0, y: 0, width: 80, height: 80)) // 사이즈 80, 80
view.backgroundColor = UIColor(named: "red") // Assets.xcassets 에 정해둔 색깔
view.layer.cornerRadius = 40 // 사이즈의 절반을 넣으면 동그라미가 됨
view.center = touch.location(in: self) // 터치의 위치를 받아서 뷰의 센터 좌표로 넣기
// 해당 터치에 동그라미 뷰 연결해주기
touchToRoundView[touch] = view
// 뷰에 동그라미 뷰 삽입하기
self.addSubview(view)
}
}
뷰 삭제
view?.removeFromSuperview()
View 와 ViewController 연결하기
UIView 를 상속받은 화면
controller 변수를 ViewController? 타입으로 추가
class FingerGameView: UIView {
var touchToRoundView: [UITouch: UIView] = [:]
weak var controller: FingerGameViewController? // 추가
//터치 시작
...
ViewController 를 상속받은 화면
gameView 변수를 UIView! 타입으로 원래 연결되어 있을 것
viewDidLoad() 에서 view의 controller 변수에 self를 대입하여 View와 연결
import UIKit
class FingerGameViewController: UIViewController {
@IBOutlet weak var gameView: FingerGameView! // 클래스 변경
override func viewDidLoad() {
super.viewDidLoad()
gameView.controller = self // gameView 의 컨트롤러에 연결해 줍니다
}
@IBAction func closeButtonClicked(_ sender: Any) {
}
}
cocoapods 사용 (m1)
// 폴더 터미널에서
pod init
open Podfile
// 텍스트 파일 end 위에 라이브러리들의 pod ~~ 추가하고 저장
// intel MAC
pod install --repo-update
// m1 칩만 !
arch -x86_64 pod install --repo-update
.xcworkspace 로 열기
Info.plist 등 다른 설정은 설명 보고 하기
App Store 심사 지침
https://developer.apple.com/kr/app-store/review/guidelines/
App Store 심사 지침 - Apple Developer
App Store 심사 지침 앱은 세상을 바꾸고 있습니다. 앱을 통해 사람들의 삶은 풍요로워지고, 여러분과 같은 개발자들은 전에 없던 새로운 방식으로 혁신을 이루고 있습니다. 이에 따라 App Store는 수
developer.apple.com
앱을 출시하려면 한번쯤은 읽어보자
1시간 분량
'iOS > COURSE' 카테고리의 다른 글
스파르타 코딩클럽 iOS 앱개발 기초반 4기 회고 (2) | 2021.07.29 |
---|---|
[스파르타코딩클럽] iOS 앱개발 기초반 4주차 - 1 (0) | 2021.07.21 |
[스파르타코딩클럽] iOS 앱개발 기초반 3주차 (0) | 2021.07.18 |
[스파르타코딩클럽] iOS 앱개발 기초반 2주차 (2) | 2021.07.18 |
[스파르타코딩클럽] iOS 앱개발 기초반 1주차 (2) | 2021.06.12 |