促销屏幕滞后

ProMotion Screen lag

我正在开发一个包含火车站列表的应用程序,当您从列表中 select 一个车站时,应该会有一个显示更多信息的视图。

对于我正在使用的列表 PM::TableScreen

在那里我有这个方法,当用户 select 是一个电台时被调用:

def select_station(station)
  open StationScreen.alloc.initWithStation(station)
end

以及对应的StationScreen

class StationScreen < UIViewController

  def initWithStation(station)
    init.tap do
      @station = station
    end
  end

  def loadView
    self.title = @station[:name]
    @layout = StationLayout.new
    self.view = @layout.view
  end

end

这会产生以下结果:

单击后退按钮时效果流畅。

现在,我想切换到 ProMotion::Screen

StationScreen 变为:

class StationScreen < PM::Screen

  attr_accessor :station

  def on_load
    self.title = @station[:name]
    @layout = StationLayout.new
    self.view = @layout.view
  end

end

和select_station方法:

def select_station(station)
  open StationScreen.new(station: station)
end

现在的背影很奇怪。请注意图像如何仍然显示一段时间,然后消失。

我做错了什么以及如何使用 ProMotion::Screen 正确实施它?

更新 1: 这修复了它。 ProMotion 的例子是建议错误的东西。

def load_view
  self.title = @station[:name]
  @layout = StationLayout.new
  self.view = @layout.view
end

这样做正确吗?

经过一些实验,我明白了。解决方法不止一种:

1) 与on_load。这里的关键是告诉布局根视图是什么。然后它可以正确地计算出如何正确地制作后退动画。如果你不给它根,就像我在开始时所做的那样 - 背部动画可能会中断。 (至少我是这么理解的)。

def on_load
  @layout = StationLayout.new(root: self.view)
  @layout.build
end

2) 与 load_view。在这里,出于某种原因,它可以在不指定根视图的情况下正常工作。我想当您将 self.view 分配给布局视图时它会自动发生。

def load_view
  @layout = StationLayout.new
  self.view = @layout.view
end

我最终使用了 on_load