Rubymotion:更通用的方法来设置导航栏属性

时间:2013-12-03 14:50:32

标签: ios ruby rubymotion

是否有更通用的方法来设置navigationBar属性?我想将半透明设置为false,将图像设置为标题。对我来说奇怪的是我可以在app_delegate.rb中设置tintColor和barTintColor,而不是其他属性。在我的所有屏幕上运行此代码有点奇怪。

我正在使用最新的Rubymotion,我正在使用促销宝石来构建我的屏幕。

class AppDelegate < ProMotion::Delegate
  include PM::Styling

  def on_load(app, options)
    set_appearance_defaults
  end

  def set_appearance_defaults
    UINavigationBar.appearance.tintColor = UIColor.whiteColor
    UINavigationBar.appearance.barTintColor = hex_color("3B4044")
  end

end

class LoginScreen < PM::Screen

  def on_init
    self.navigationItem.titleView = UIImageView.alloc.initWithImage(UIImage.imageNamed("logos/navigation_bar_logo.png"))
    self.navigationController.navigationBar.translucent = false
  end

end

1 个答案:

答案 0 :(得分:2)

上面添加了一些评论,但这里有一个你可以尝试的实际答案,非常灵活。

# app/mk_screen.rb
class MKScreen < PM::Screen
  def useLogoNavbar
    self.navigationItem.titleView = UIImageView.alloc.initWithImage(UIImage.imageNamed("logos/navigation_bar_logo.png"))
    self.navigationController.navigationBar.translucent = false
  end
end

# app/login_screen.rb
class LoginScreen < MKScreen
  useLogoNavbar
end

现在你仍然需要调用一个方法,但它至少可以让你选择是否使用它。这也意味着您可以使用MKScreen为视图控制器放置一些常用代码。