Живой просмотр в игровой площадке Xcode 8 не работает

В моей игровой площадке Swift я ввел следующий код, чтобы проверить функцию просмотра в реальном времени:

let view = UIView()

PlaygroundPage.current.liveView = view

Но по какой-то причине просмотр в реальном времени не отображается справа в редакторе помощника. Первоначально я думал, что Xcode не закончил работать на детской площадке. Но я ждал и ждал, и он все еще не показывает.

Снимок экрана: введите описание изображения здесь

Любая помощь?

Ответ 1

У меня была такая же самая точная проблема. Я нашел временное решение.

Я заметил, что если бы я открыл более одного проекта Xcode, это вызовет эту ошибку. Итак, просто полностью прекратите xcode (команда Q) и только откройте живую площадку, на которой вы пытаетесь работать, и она должна работать.

Удостоверьтесь, что у вас есть следующий импорт, и вы можете дать ему фрейм и цвет, чтобы убедиться, что он действительно работает, так как ваш вид не имеет рамки или цвета. Этот код работает для меня.

import UIKit
import PlaygroundSupport

let view = UIView()
view.backgroundColor = .white
view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)

PlaygroundPage.current.liveView = view

playground live view

Ответ 2

В Xcode 9.0, а также:

PlaygroundPage.current.needsIndefiniteExecution = true

Вам нужно вручную открыть редактор ассистента, тогда игровая площадка с текущим фокусом покажет UIView.

Ответ 3

У меня была такая же проблема, и следующая строка кода исправила это для меня:

PlaygroundPage.current.needsIndefiniteExecution = true

Настройка просмотра в реальном времени должна автоматически активировать его для вас, но для меня это не было сделано. Должна быть ошибка в Xcode.

Ответ 4

Установка UIView в качестве живого просмотра работала только для меня на игровых площадках iPad, но не в Xcode.

Чтобы представление появилось на игровой площадке Xcode 9 & 10, я обернул его в контроллер представления и установил вместо него режим живого просмотра (точно так же, как и на игровой площадке по умолчанию с одним видом):

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white
        self.view = view
    }
}

PlaygroundPage.current.liveView = MyViewController()

Ответ 5

Я смог предварительно просмотреть представление viewcontroller, только явно оставив представление контроллера в коде игровой площадки следующим образом:

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    // ...
}

let controller = MyViewController()
PlaygroundPage.current.liveView = controller
controller.view // <- to the far right of this line in editor you'll be able to expand and see result