Как изменить цвет почтового ящика SKView при использовании scaleMode .AspectFit

Я использую стандартное полноэкранное представление SpriteKit из шаблона кода (проект новой игры iOS), и когда я использую

scene.scaleMode = .AspectFit 

чтобы убедиться, что сцена подходит, оставшаяся (почтовая ящик) область окрашена в черный цвет.

Я пробовал эти параметры, чтобы изменить цвет:

 let skView = self.view as SKView // was hoping this one would work skView.backgroundColor = UIColor.redColor() // didn't expect this would work, since scene is scaled anyways scene.backgroundColor = SKColor.redColor() 

Также попытался изменить цвет фона SKView в редакторе раскадровки на другой цвет, но не повезло.

Любые советы о том, где искать изменение цвета почтового ящика?

  • Невозможно изменить карту плитки Xcode 8 GM
  • Почему я не могу добавить SKScene в другой SKScene?
  • Добавить жест в SKShapeNode в WatchOS3
  • Физическое тело не придерживается точки привязки узла
  • Обнаруживать касание внутри текстуры Sprite, а не всего кадра iOS Swift SpriteKit?
  • Как использовать Swift Selector? Селектор постоянно приводит к тому, что `Type не имеет члена`
  • SpriteKit - физика, не уважающая край
  • Sprite Kit / Swift Stars Эффект
  • 2 Solutions collect form web for “Как изменить цвет почтового ящика SKView при использовании scaleMode .AspectFit”

    Я думаю, что это должен быть способ установить цвет или разместить спрайты в ушах фирменных бланков … но кажется, что их нет. Кроме того, я не согласен с LearnCocos2D. В AspectFit нет ничего плохого. Он имеет свое применение.

    То, что я сделал, это использовать AspectFit, но также рассчитать размер сцены на основе размера экрана. Это не так полезно для OSX-игры, но это отлично работает для iOS.

     func createScene() -> GameScene { let screenSize = UIScreen.mainScreen().bounds.size var size:CGSize = CGSizeZero size.height = Constants.sceneHeight size.width = screenSize.width * (size.height / screenSize.height); return GameScene(size: size) } override func viewDidLoad() { super.viewDidLoad() let scene = self.createScene() // Configure the view. let skView = self.view as SKView skView.showsFPS = false skView.showsNodeCount = false /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFit skView.presentScene(scene) } 

    После визуализации сцены его содержимое копируется в представление представления. Если вид и сцена имеют одинаковый размер, содержимое можно напрямую скопировать в представление. Если они отличаются друг от друга, тогда сцена масштабируется, чтобы вписаться в представление. Свойство scaleMode определяет, как масштабируется содержимое.

    Почтовый ящик создается в представлении, поэтому его нет. При этом часто требуется настройка .aspectFit, если вы хотите использовать определенный размер сцены и универсальную систему координат. Если это ваш случай, вам следует помочь следующее.

    Вам нужно выяснить, сколько стандартного .aspectFit потребуется в дополнении для удаления бокса с вашего текущего устройства и добавления его в вашу сцену. Вы заканчиваете сцену, которая светлее немного больше или немного шире, чем ваши первоначальные размеры, но сцена имеет, по крайней мере, тот же размер, что и исходный размер сцены. Затем вы можете переместить anchorPoint в исходные (0, 0) координаты или (0,5, 0,5) в зависимости от того, какую систему координат вы хотите использовать для своей игры.

    Код для этого свернутый и может меняться со временем. Если вы хотите быстро исправить, я создал Framework именно для этой цели. Он маленький, но портативный 🙂

    https://github.com/Tokuriku/tokuriku-framework-stash

    Просто:

    1. Загрузите ZIP-файл для репозитория
    2. Откройте подпапку «SceneSizer»
    3. Перетащите SceneSizer.framework «lego block» в ваш проект
    4. Убедитесь, что Framework в Embedded, а не только Linked
    5. Импортируйте Framework где-нибудь в свой код import SceneSizer

    И вы закончили, теперь вы можете вызвать класс SceneSizer.calculateSceneSize(#initialSize: CGSize, desiredWidth: CGFloat, desiredHeight: CGFloat) -> CGSize с помощью: SceneSizer.calculateSceneSize(#initialSize: CGSize, desiredWidth: CGFloat, desiredHeight: CGFloat) -> CGSize

    Документация находится в папке для чистого и полного использования со стандартной сценой. Надеюсь это поможет!

    Interesting Posts

    Если бы вы могли купить две книги по разработке iOS, какие из них вы бы выбрали?

    Как получить программные размеры Iphone ViewController

    iOS и Go – Keep-Alive с использованием NSURLSession

    Вызов C ++ из Objective-C

    Получить последнего работодателя, используя API-интерфейс Facebook Graph

    Удалить добавленную выборку в приложении «Здоровье»

    Приложение Mac / iPhone – синхронизация данных ядра с iCloud и устройствами (с использованием основных данных)

    Как удалить строку состояния при появлении оповещения TouchID?

    CSS-фон растягивается, чтобы заполнить экран в Safari, но не на iOS

    Где я должен помещать свои изображения в проект iPhone?

    Макет анимации UIView Не работает

    Воспроизведение звука при выключенном экране / Не позволяйте iPhone переходить в режим сна

    Библиотека линейной алгебры с использованием OpenGL ES 2.0 для iOS

    Повторная инициализация свойств Objective-c

    Как получить символ валюты из кода валюты для всех доступных мест в Swift?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.