CocoaPods로 넣은 라이브러리의 라이센스 표기 화면을 만들고 싶습니다.

기기 설정 화면에 사사를 넣는 방법



자주 이쪽의 방법으로, 사사를 넣는 것이 많았습니다만...
[iOS] 앱 설정 화면에 버전 표기와 사사를 자동으로 설정 / Developer.IO

앱 중에서도 표시하고 싶습니다.



TableView&자작 레이아웃의 셀로 어떻게 든 표시할 수 없는지 트라이해 보았다.

이미지는 이런 느낌





표시용 데이터 얻기


Setting.bundle 안에 Acknowledgements.plist가 있는 전제.
( Pods/Targets Support Files/{PROJECT_NAME}/Acknowledgements.plist 를 직접 보러 갈 수 있는지는 시도하지 않는다)
var items: [Any] = []
if let path = Bundle.url(forResource: "Acknowledgements", 
                         withExtension: "plist", 
                         subdirectory: nil, 
                         in: Bundle.main.url(forResource: "Settings", withExtension: "bundle")!) {

    let dic = NSDictionary(contentsOf: path)!
    self.items = dic["PreferenceSpecifiers"] as! [Any]

    // 最初と最後以外が必要な情報
    self.items.removeFirst()
    self.items.removeLast()
}

셀 사용자 정의



심플하게 이런 느낌으로 해봤다.


셀 높이 가변화



이것만으로 가변으로 할 수 있게 된 것은 고맙다.
self.tableView.estimatedRowHeight = 100
self.tableView.rowHeight = UITableViewAutomaticDimension

표시할 부분



라이브러리를 만들 때 자동 생성되는 LICENSE 파일에는 마지막에 개행이 붙어 있다.
(마지막으로 개행 코드가 2개 붙어 있는 라이브러리는, 아마 그대로 사용하고 있을 것이다)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.items.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "licenseCell", for: indexPath) as! LicenseCell

    let item = self.items[indexPath.row] as! NSDictionary

    cell.titleLabel.text = item["Title"] as? String
    cell.licenseLabel.text = item["License"] as? String

    // 最後に付いてる改行を取り除きたかった
    cell.footertextLabel.text = (item["FooterText"] as! String).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)

    return cell
}

마지막으로...



plist 파일에서 데이터를 얻을 수 있다는 것을 알게 된 것은 개인적으로 크다.

좋은 웹페이지 즐겨찾기