0

iOS 5以降、の背景画像をカスタマイズするのは簡単ですがUINavigationBar、の背景画像を設定する際に私が見逃していることがあるようですMFMailComposeViewController。次のスニペットを使用して、のインスタンスを設定しますMFMailComposeViewController

if ([MFMailComposeViewController canSendMail])) {
    // Initialization
    MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
    [vc setModalPresentationStyle:UIModalPresentationFormSheet];

    // Navigation Bar
    [[vc navigationBar] setBackgroundImage:[UIImage imageNamed:@"navbar_top"] forBarMetrics:UIBarMetricsDefault];

    // Configuration
    [vc setMailComposeDelegate:self];

    // Present Mail Compose View Controller
    [self presentViewController:vc animated:YES completion:nil];
}

バーボタンアイテムは適切にスキンされていますが、メール作成ビューコントローラのナビゲーションバーはスキンされていません。私は何かを見落としていますか?

4

4 に答える 4

0

あなたがコントローラーを提示した後

// Present Mail Compose View Controller
[self presentViewController:vc animated:YES completion:nil];

このようにimageViewとして画像を追加します

UIImage *image = [UIImage imageNamed: @"navbar_top.png"];
UIImageView * iv = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,42)];
iv.image = image;
iv.contentMode = UIViewContentModeCenter;
[[[vc viewControllers] lastObject] navigationItem].titleView = iv;
[[vc navigationBar] sendSubviewToBack:iv];
[iv release];

しかし、iOS4にはある種の保護があると思います。

ここでは、Appleが提供するインターフェースを変更してはならないことが明確に述べられています。

http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

重要:メール作成インターフェース自体はカスタマイズできないため、アプリケーションで変更しないでください。さらに、インターフェースを提示した後、アプリケーションは電子メールの内容にそれ以上の変更を加えることはできません。ユーザーは引き続きインターフェースを使用してコンテンツを編集できますが、プログラムによる変更は無視されます。したがって、インターフェイスを表示する前に、コンテンツフィールドの値を設定する必要があります。

私はフォーラムを検索しましたが、一部のフォーラムではアプリが拒否されたため、これを行うことは控えるべきだと思います。

それが役に立てば幸い。ハッピーコーディング:)

于 2012-09-14T10:14:32.660 に答える
0

編集: custom-background-for-uinavigationbarリンクを参照してください。

間違った画像名を付けた可能性があると思います:navbar_top navbar_top.pngまたはnavbar_top.jpgの可能性があります

あなたはこれを試すことができます:

if([[UINavigationBar class] respondsToSelector:@selector(appearance)]) //iOS >=5.0
{
  [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar_top.png"] forBarMetrics:UIBarMetricsDefault];
}
于 2012-09-14T09:53:25.043 に答える
0

これができるのは、MFMailComposeViewController クラスが から継承されているためです。

UINavigationController : UIViewController : UIResponder : NSObject

しかし、アップルのドキュメントを読んでください。Appleはそうするのを許しません。

重要

メール作成インターフェイス自体はカスタマイズできないため、アプリケーションで変更しないでください。さらに、インターフェイスを表示した後、アプリケーションは電子メールの内容をさらに変更することはできません。ユーザーはインターフェイスを使用してコンテンツを編集できますが、プログラムによる変更は無視されます。したがって、インターフェイスを表示する前にコンテンツ フィールドの値を設定する必要があります。

詳細情報MFMailComposeViewController_class

それでも実装したい場合は 、ナビゲーションバーの変更に役立つ可能性があります MFMailComposeViewController

于 2012-09-14T10:07:59.043 に答える