4

RubyMotion アプリでナビゲーション バーをカスタマイズしようとしていますが、タイトル テキストのフォントや色を変更できないようです。背景画像と色合いは設定できますが、タイトル属性は設定できません。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)

    @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)

    navigationBar = UINavigationBar.appearance
    #navigationBar.setBackgroundImage(UIImage.imageNamed('navigation-bar-background.png'), forBarMetrics: UIBarMetricsDefault)
    #navigationBar.setTintColor(UIColor.greenColor)
    navigationBar.setTitleTextAttributes({
      UITextAttributeFont: UIFont.fontWithName('Trebuchet MS', size:24),
      UITextAttributeTextShadowColor: UIColor.colorWithWhite(0.0, alpha:0.4),
      UITextAttributeTextColor: UIColor.blueColor
    })
    puts navigationBar.titleTextAttributes.inspect

    @window.rootViewController = UINavigationController.alloc.initWithRootViewController(MainMenuController.alloc.init)
    @window.rootViewController.wantsFullScreenLayout = true
    @window.makeKeyAndVisible

    true
  end
end

コンソール出力は、inspect ステートメントに対してこれを示しています。

{:UITextAttributeFont=>#<UICFFont:0x963aa70>,
 :UITextAttributeTextShadowColor=>UIColor.color(0x0, 0.0),
 :UITextAttributeTextColor=>UIColor.blueColor}

したがって、すべてが正しく設定されているように見えますが、標準の青いナビゲーション バーと白いテキストしか表示されません。

4

1 に答える 1

15

UITextAttributeFontなどは実際の定数ですが、新しい Ruby 1.9 スタイルのハッシュ割り当てで使用すると、シンボルに変換されます。

これを回避する最も簡単な方法は、古い hash-rocket 割り当てスタイルを使用することです (UIText... 項目の前にコロンを置かないようにしてください)。

navigationBar.setTitleTextAttributes({
  UITextAttributeFont => UIFont.fontWithName('Trebuchet MS', size:24),
  UITextAttributeTextShadowColor => UIColor.colorWithWhite(0.0, alpha:0.4),
  UITextAttributeTextColor => UIColor.blueColor
})
于 2012-10-31T20:00:28.673 に答える