2013-10-24 13 views
18

setFinishedSelectedImage:withFinishedUnselectedImage:は、iOS7では非推奨です。 Apple recommendsは、imageselectedImageのセッターをUIImageRenderingModeAlwaysOriginalと代わりに使用します。 UIImageRenderingModeAlwaysOriginalの使用方法の例は見つかりません。質問は本当にシンプルです:iOS7でUITabBarItemの画像を設定するには?UITabBarItem setFinishedSelectedImage:iOS7では非推奨です。

+0

に代わるもの

[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
を使用ビデオ "Cocoa Touchの新機能"私はそれがそのビデオで説明されていると思う。 – borrrden

答えて

55

UITabBarで実際の画像を表示しようとしている場合は、次のコードを使用してください。

[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

、あなたが選択し、その後のために元の状態で画像を表示する場合は2013 WWDCをチェックアウトこれら二つは

setFinishedSelectedImage: withFinishedUnselectedImage: 
+1

+1これは完全に機能します。このソリューションは、IDEが推奨するinitWithTitle:image:selectedImage:よりも多くの注意を払う必要があります。 – justinkoh

6

setFinishedSelectedImageは、Appleがテンプレートイメージと選択したtintColor(またはBlueのデフォルト)を使用するように指示するため、推奨されていません。したがって、簡単なデフォルトではTab Bar Itemsはそうなります。

アイコンイメージを設計どおりに使用する必要がある場合は、常にオリジナルのレンダリングモードでイメージを作成します。同様に:

[[UIImage imageNamed:@"YourIcon.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]; 

あなたはViewControllerからtabBarItemを取得する必要がありますアイコンを設定します。私のアプリで見逃したのは、各タブにタブ内のトップビューコントローラーをラップするNavigationControllerがあるということでした。このテーマに関するほとんどの答えは、navigationContollerの取得について言及していないし、それは私のアプリでそれを稼働させるための鍵でした。

私のUITableViewContollerサブクラスでは、viewDidLoadに以下を追加しました。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

... 

[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"] 
imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]]; 

} 

その結果、タブが選択されたときに設計されたアイコンになりました。 imageWithRenderingModeメソッド呼び出しを終了すると、アイコンはtintColorで色付けされたテンプレートとして扱われます。お役に立てれば。

0
class TabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tabBar.backgroundImage = UIImage() 
     self.tabBar.shadowImage = UIImage() 
    } 

} 
+0

この[URL](http://stackoverflow.com/help)に従ってください。コンテンツの品質を上げるのに役立ちます –