Как изменить цвет почтового ящика 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 в редакторе раскадровки на другой цвет, но не повезло.

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

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

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

  • Как отладить расширение share ios?
  • Заменить динамический UITableView от NSDate
  • Как использовать не-английскую строку в NSURL?
  • Swift - ошибка NSURL
  • удаление SCNNode не освобождает память перед созданием нового SCNNode
  • Принесите контейнер к виду спереди
  • Случайное число из массива без повторения одного и того же номера дважды подряд?
  • Спиновая бутылка с UIGestureRecognizer
  • Вызов возврата родительской функции из обработчика завершения
  • Что здесь не так: член экземпляра нельзя использовать в типе
  • Обратный звонок Google Places не вызывается в Swift iOS
  • Interesting Posts

    Обновление приложения для iPhone в фоновом режиме

    Невозможно добавить цель для UIButton – непризнанный селектор, отправленный экземпляру, несмотря на то, что метод был в том же классе

    Объем видео в HTML5

    Откройте настройки Wifi с помощью команды «prefs: root = WIFI» в iOS 10

    Можно ли затухать между двумя фоновыми изображениями?

    Обновляется ли файл приложения apple-app-site-association json в приложении?

    Как отменить зависимости NSOperation?

    Использование моего NavigationController с моим ECSlidingViewController

    Google Map не будет отображаться в приложении iGoGuard

    FBSDKGraphRequest в структуре болтов никогда не вызывает блок

    Ориентация цилиндра между двумя точками на сфере, Scenekit, Quaternions IOS

    UISplitViewController подробно отображает контроллер контроллера в окне главного просмотра

    Метод огня при возврате последнего блока

    Как получить всю информацию о процессе в объекте-c в системе iOS?

    Как поддерживать различные SDK для iOS на Xcode 4.2?

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