IT TIP

iOS 플레이 그라운드에 UI 미리보기가 표시되지 않음

itqueen 2020. 12. 27. 20:35
반응형

iOS 플레이 그라운드에 UI 미리보기가 표시되지 않음


XCode 7.1로 간단한 플레이 그라운드를 만들고 다음과 같은 간단한 코드를 입력했습니다.

import UIKit 
import XCPlayground 

var str = "Hello, playground" 

let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 ) 

let view = UIView() 
view.backgroundColor = UIColo (colorLiteralRed: 1 , green: 0 , blue: 0 , alpha: 0 ) 

view.frame = CGRect (x: 0 ,y: 0 ,width: 100 ,height: 100 ) 

let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 50 , height: 20 )) 

label.text = str 

view.addSubview(label) 

플레이 그라운드가 실행되면 UIKit 객체 미리보기가 표시되지 않고 디버그 정보 만 표시됩니다.

운동장

내가 도대체 ​​뭘 잘못하고있는 겁니까?


미리보기 패널을 엽니 다. 보기> 보조 편집기> 보조 편집기 표시

그런 다음 코드에서 :

import PlaygroundSupport
PlaygroundPage.current.liveView = view

뷰에 가시적 인 프레임을 제공하는 것을 잊지 마십시오.


추신 : Xcode 9 이후 기본보기로 플레이 그라운드를 만들 수 있습니다.

운동장


허용되는 대답은 인라인 코드가 아닌 스크린 샷이며,이 Xcode 8 이전을 수행하는 방법을 보여 주므로 좋은 대답이라고 생각하지 않습니다.

다음은 Xcode 8에 대한 업데이트 된 답변입니다.

몇 가지 단계가 있습니다.

PlaygroundSupport를 가져와야합니다.

import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution을 true로 설정해야합니다.

PlaygroundPage.current.needsIndefiniteExecution = true

표시하려는 뷰 계층을 liveView에 추가해야합니다.

PlaygroundPage.current.liveView = container

전체 놀이터는 다음과 같습니다.

import UIKit
import PlaygroundSupport

let container = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
view.backgroundColor = UIColor.red
container.addSubview(view)

PlaygroundPage.current.liveView = container
PlaygroundPage.current.needsIndefiniteExecution = true

마지막으로 방금 만든 라이브 뷰를 확인해야합니다. 내 Xcode 8 (릴리스 버전)에서보기 메뉴> 보조 편집기> 보조 편집기 표시 Xcode를 선택하려고하면 매번 충돌합니다.

컨테이너 뷰를 생성하는 줄에서 코드 오른쪽에있는 상자의 화면 오른쪽에 마우스를 가져 가야합니다. 작은 눈 아이콘이 보이며 클릭하면 충돌없이 라이브 뷰가 표시됩니다.


보조 편집자가 아무것도하지 않는 문제를 경험하신 분들을 위해 (저에게는 단순히 공백이었습니다) 문제를 해결 한 방법은 다음과 같습니다.

  1. 해당 코드를 사용하여 테스트하십시오. https://stackoverflow.com/a/33543820/4572536 (위에서 허용 된 답변)

  2. View -> Assistent Editor -> Assistent Editors on Bottom (또는 기타 옵션)

후자는 Xcode를 트리거하여 뷰를 다시 그립니다.

참고 : 전체 시스템을 다시 시작한 후에도 Xcode가 뷰를 그리지 않았기 때문에 가능한 해결 방법으로 이것을 공유하고 있습니다. 이 문제를 재현하는 방법을 모르겠지만 문제가 발생하면이 해결 방법을 시도해 볼 수 있습니다.


구문 외에도 라이브 뷰를 다시 내 경우에 표시하는 다른 트릭을 찾았습니다 (Xcode 8.2.1 Swift 3.0). 또한 이것은 Xcode의 사소한 버그 일 수 있습니다. 어시스턴트 에디터 상단의 + 버튼을 클릭하세요. 어시스턴트 편집자가 파일의 인터페이스 파일을 표시하고 라이브 페이지 자동 표시를 거부하기 때문입니다.

여기에 이미지 설명 입력


플레이 그라운드 설정에서 타임 라인 표시를 선택하면됩니다.


이전 답변에 필요한 컨테이너 뷰가 필요한 이유를 알 수 없습니다. 이것은 잘 작동합니다.

import UIKit
import XCPlayground
import PlaygroundSupport
var str = "Hello, playground"
let color = UIColor (red: 1 , green: 1 , blue: 0 , alpha: 0 )
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
view.backgroundColor = UIColor.red
view.frame = CGRect (x: 0 ,y: 0 ,width: 200 ,height: 200 )
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = view
let label = UILabel (frame: CGRect (x: 5 , y: 5 , width: 200 , height: 20 ))
label.text = str
view.addSubview(label)

단일 뷰에 대한 Xcode 플레이 그라운드를 만들고 처음으로 실행 한 후 오른쪽 상단 모서리에있는 어시스턴트 편집기를 활성화하여 라이브 뷰를 활성화하는 것을 잊지 마십시오. 여기에 이미지 설명 입력


Xcode 8.3에서는 여전히 문제가 있습니다. 작동하는 유일한 방법은 Xcode를 종료하고 다시 시작하는 것입니다. 시뮬레이터가 실행되고 있다는 것을 알았 기 때문에 시뮬레이터를 종료하려고했지만 문제가 해결되지 않았습니다. 레이더를 제출합니다.

import UIKit

import PlaygroundSupport



let frame = CGRect(x: 0, y: 0, width: 300, height: 700)
let container = UIView(frame: frame)
container.backgroundColor = .red

let inner = UIView(frame: CGRect(x: 100, y: 100, width: 20, height: 40))

inner.backgroundColor = .blue
container.addSubview(inner)

PlaygroundPage.current.liveView = container
PlaygroundPage.current.needsIndefiniteExecution = true

참조 URL : https://stackoverflow.com/questions/33543460/ios-playground-doesnt-show-ui-preview

반응형