[tvOS] 홈 화면에 선반 표시

선반



선반이라는 의미

선반 표시 조건



상단에 아이콘이 놓여 있는 것이 조건이 된다.



맨 위에 아이콘이 있는 예



상단에 아이콘이 없으면 선반은 표시되지 않습니다.

선반의 서 위치



Keyboard Extension과 같이 익스텐션의 취급이 된다.

프로젝트에 추가




New에서 Target을 선택합니다.


TVServiceExtension을 선택하여 추가

ServiceProvider.swift



대상에 TVServiceExtension을 추가하면 ServiceProvider.swift가 프로젝트에 추가됩니다.
ServiceProvider.swift는 TVTopShelfProvider에 의해 몇 가지 기능이 주어진 NSObject의 서브 클래스입니다.

topShelfStyle:TVTopShelfContentStyle



여기서 선반 스타일을 반환합니다.
Inset과 Sectioned를 선택할 수 있다.

Sectioned





Inset





이 차이는 이미지의 크기가 아니라 섹션의 제목이 표시되는지 여부입니다.

topShelfItems: [TVContentItem]



여기서는 표시 할 콘텐츠를 반환합니다.

    var topShelfItems: [TVContentItem] {
        let contentIdentifier = TVContentIdentifier(identifier: "sample", container: nil)
        let contentItem = TVContentItem(contentIdentifier: contentIdentifier!)!
        let imageURL = NSBundle.mainBundle().URLForResource("Unknown", withExtension: "jpg")
        contentItem.imageURL = imageURL
        return [contentItem]
    }




imageURL에는 https~로 시작하는 URL도 지정할 수 있다

    var topShelfItems: [TVContentItem] {
        let contentIdentifier = TVContentIdentifier(identifier: "sample", container: nil)
        let contentItem = TVContentItem(contentIdentifier: contentIdentifier!)!
        let imageURL = NSURL(string: "https://placeimg.com/640/480/any")
        contentItem.imageURL = imageURL
        return [contentItem]
    }




imageShape



imageShape를 지정하면 포스터나 사각형 등의 크기로 이미지를 컨텐츠를 변경할 수 있다.
덧붙여 Inset의 경우는 ExtraWide만, Sectioned의 경우는 Poster, Square, HDTV를 선택할 수 있다.

topShelfItems



TVContentItem은 한 장의 콘텐츠로 이외에도 콘텐츠를 묶는 역할도 있다.
    var topShelfItems: [TVContentItem] {
        let contentIdentifier = TVContentIdentifier(identifier: "sample", container: nil)
        let contentItem = TVContentItem(contentIdentifier: contentIdentifier!)!
        let imageURL = NSURL(string: "https://placeimg.com/640/480/any")
        contentItem.imageURL = imageURL
        contentItem.imageShape = .Poster
        let group = TVContentItem(contentIdentifier: contentIdentifier!)!
        group.topShelfItems = [contentItem,contentItem,contentItem,contentItem]
        group.title = "画像群"
        return [group]
    }

좋은 웹페이지 즐겨찾기