2013-12-03 2 views
0

Есть ли более общий способ настройки свойств navigationBar? Я хотел бы установить полупрозрачное значение false и изображение как заголовок. Для меня странно, что я могу установить tintColor и barTintColor в app_delegate.rb, но не в других свойствах. Немного странно запускать этот код на всех моих экранах.Rubymotion: более общий способ настройки свойств navigationBar

Я использую последнюю 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

Вы всегда можете подклассифицировать UINavigationController, если у вас будет один и тот же навигационный бар через приложение или действительно, более одного раза. – FluffyJack

+0

Другое дело, хотя это (это материал UX извините), не рекомендуется размещать логотип в навигационной панели. – FluffyJack

+1

Или подкласс PM :: Экран. – FluffyJack

ответ

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 для размещения небольшого общего кода для ваших контроллеров представлений.