앱을 처음 시작할 때 화면 사용법을 알려주는 코치 마크 구현
코치마크란?
자주 앱을 처음 시작할 때 화면의 기능을 소개해주는 것입니다.
이런 느낌에 사용법을 가르쳐줍니다.
기능이 많을수록 UI가 복잡해집니다.
그렇다면 처음 만지는 사용자는 당황 할 수 있습니다.
가능한 한, 설명하지 않아도 취급할 수 있도록(듯이) 설계하는 것이 최선인 것입니다만, 그렇게는 말할 수 없는 것도 있으니까요.
코치 마크를 붙이면 처음 사용하는 사용자라도 어떤 버튼을 누르면 무슨 일이 일어나는지 알기 쉬워집니다.
라이브러리 설치
여러가지 있습니다만 ephread/Instructions 를 사용해 보았습니다.
Podfilepod 'Instructions'
$ pod install
Podfile
에 라이브러리를 추가하고 터미널에서 pod install
를 실행하십시오.
이것으로 설치가 끝납니다.
구현
이제 라이브러리를 사용하여 코치 마크를 표시해 봅시다.
CoachMarksController
의 인스턴스를 만들고 dataSource
를 설정합니다.
이번은 전부 ViewController
로 가고 있습니다만, 다른 클래스로 분할해도 좋다고 생각합니다.
ViewController.swiftimport Instructions
class ViewController: UIViewController, CoachMarksControllerDataSource {
var coachController = CoachMarksController()
override func viewDidLoad() {
super.viewDidLoad()
self.coachController.dataSource = self
}
}
다음에 CoachMarksControllerDataSource
의 메소드를 구현합니다.
최소한 필요한 것은
여러가지 있습니다만 ephread/Instructions 를 사용해 보았습니다.
Podfile
pod 'Instructions'
$ pod install
Podfile
에 라이브러리를 추가하고 터미널에서 pod install
를 실행하십시오.이것으로 설치가 끝납니다.
구현
이제 라이브러리를 사용하여 코치 마크를 표시해 봅시다.
CoachMarksController
의 인스턴스를 만들고 dataSource
를 설정합니다.
이번은 전부 ViewController
로 가고 있습니다만, 다른 클래스로 분할해도 좋다고 생각합니다.
ViewController.swiftimport Instructions
class ViewController: UIViewController, CoachMarksControllerDataSource {
var coachController = CoachMarksController()
override func viewDidLoad() {
super.viewDidLoad()
self.coachController.dataSource = self
}
}
다음에 CoachMarksControllerDataSource
의 메소드를 구현합니다.
최소한 필요한 것은
import Instructions
class ViewController: UIViewController, CoachMarksControllerDataSource {
var coachController = CoachMarksController()
override func viewDidLoad() {
super.viewDidLoad()
self.coachController.dataSource = self
}
}
numberOfCoachMarks(for coachMarksController: CoachMarksController)
coachMarksController(_ coachMarksController: CoachMarksController, coachMarkAt index: Int)
coachMarksController(_ coachMarksController: CoachMarksController, coachMarkViewsAt index: Int, madeFrom coachMark: CoachMark)
그렇죠?
ViewController.swift
class ViewController: UIViewController, CoachMarksControllerDataSource {
...
// コーチマークを表示したいUIView
@IBOutlet weak var firstButton: UIButton!
@IBOutlet weak var secondButton: UIButton!
// マークのメッセージ配列
private messages = ["First Message", "Second Message"]
// UIViewを配列にしておきます
private views = [self.firstButton, self.secondButton]
func coachMarksController(_ coachMarksController: CoachMarksController, coachMarkViewsAt index: Int, madeFrom coachMark: CoachMark) -> (bodyView: CoachMarkBodyView, arrowView: CoachMarkArrowView?) {
let coachViews = coachMarksController.helper.makeDefaultCoachViews(withArrow: true, arrowOrientation: coachMark.arrowOrientation)
coachViews.bodyView.hintLabel.text = self.messages[index] // ここで文章を設定
coachViews.bodyView.nextLabel.text = "了解" // 「次へ」などの文章
return (bodyView: coachViews.bodyView, arrowView: coachViews.arrowView)
}
func numberOfCoachMarks(for coachMarksController: CoachMarksController) -> Int {
return self.messages.count
}
func coachMarksController(_ coachMarksController: CoachMarksController, coachMarkAt index: Int) -> CoachMark {
return self.coachController.helper.makeCoachMark(for: self.views[index], pointOfInterest: nil, cutoutPathMaker: nil)
// for: にUIViewを指定すれば、マークがそのViewに対応します
}
}
마지막으로
CoachMarksController
의 start
와 stop
를 호출합니다.ViewController.swift
class ViewController: UIViewController, CoachMarksControllerDataSource {
...
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.coachMarksController.start(in: .window(over: self))
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.coachMarksController.stop(immediately: true)
}
}
동작 확인
실행하면 이런 느낌이 듭니다. (문장이나 화면이 상기의 코드와는 다른 것은 양해 바랍니다)
기본적으로 오버레이 색상은 흰색처럼 보입니다.
개인적으로는 흑이 좋아할까.
coachMarksController.overlay
에서 색상을 변경할 수 있습니다.
self.coachController.overlay.color = UIColor.init(hex: "000000", alpha: 0.3)
비고
지금은 화면을 열 때마다 코치 마크가 표시되므로 UserDefaults
등을 사용하여 처음 시작할지 여부를 확인하는 것이 좋습니다.
Reference
이 문제에 관하여(앱을 처음 시작할 때 화면 사용법을 알려주는 코치 마크 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkt989/items/2981497580beae09875d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
self.coachController.overlay.color = UIColor.init(hex: "000000", alpha: 0.3)
지금은 화면을 열 때마다 코치 마크가 표시되므로
UserDefaults
등을 사용하여 처음 시작할지 여부를 확인하는 것이 좋습니다.
Reference
이 문제에 관하여(앱을 처음 시작할 때 화면 사용법을 알려주는 코치 마크 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tkt989/items/2981497580beae09875d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)