[Swift3] iOS 기기의 글꼴 목록 앱을 만듭니다.
아래에 코드를 올려 놓습니다만, 간단하고 짧은 코드로 완성합니다. (Xcode 8.0에서 작성)
첫 페이지에서 글꼴 패밀리 목록이 표시되고 패밀리에 두 개 이상의 글꼴이 있는 패밀리는 탭하면 다음 페이지에 패밀리의 글꼴이 표시됩니다.
(1) 먼저 Xcode를 시작하여 Single View Application을 새로 만듭니다.
(2) 스토리 보드에서 ViewController를 선택하고
Editor
메뉴 Embed in
> Navigation Controller
에서 Navigation Controller를 추가합니다.(3) ViewController에 UITableView를 붙여 넣습니다. Table View를
ViewController.swift
의 IBOutlet tableView
에 연결합니다.Table View의
dataSource
및 delegate
를 ViewController
로 가정합니다. 그런 다음 UITableViewCell의 프로토 타입에 Cell
라는 ID를 추가합니다.(4) ViewController의 스토리 보드 ID를
Main Controller
로 설정합니다.(5)
ViewController.swift
를 다음과 같이 편집합니다.ViewController.swift
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
// フォントファミリー名。nilだと、先頭ページであることを示す。
var familyName: String? = nil
// 先頭ページでは、フォントファミリー名の配列。フォントファミリーのページでは、フォント名の配列。
private var nameArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// プロパティfamilyNameがnilだったら、nameArrayにフォントファミリー名の配列、そうでなかったら、ファミリーのフォントの配列を代入。
if let familyName = familyName {
nameArray = UIFont.fontNames(forFamilyName: familyName)
// Navigation Barのタイトルをファミリー名にする。
title = familyName
} else {
nameArray = UIFont.familyNames
title = "Font families"
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Table ViewのDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return nameArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let fontName = nameArray[indexPath.row]
// ファミリー名、あるいはフォント名。
cell.textLabel?.text = fontName
// ファミリー内に2個以上のフォントがある場合、セルのアクセサリーをdisclosureにして、タップすると、次ページに遷移することを印象付ける。
cell.textLabel?.font = UIFont(name: fontName, size: 17.0)
if familyName == nil && UIFont.fontNames(forFamilyName: fontName).count > 1 {
cell.accessoryType = .disclosureIndicator
} else {
cell.accessoryType = .none
}
return cell
}
// Table ViewのDelegate
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// 先頭ページで、フォントが2個以上あるファミリーをタップした時だけ、ページを遷移する。
guard let cell = tableView.cellForRow(at: indexPath),
cell.accessoryType == .disclosureIndicator,
familyName == nil else {
return
}
// 遷移は、プログラム(pushViewController〜)で行う。
if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Main Controller") as? ViewController {
viewController.familyName = nameArray[indexPath.row]
if let navigator = navigationController {
navigator.pushViewController(viewController, animated: true)
}
}
}
}
Reference
이 문제에 관하여([Swift3] iOS 기기의 글꼴 목록 앱을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NagonSoft/items/748e3a096f2d2665a6a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)