【问题标题】:MFMailComposeViewController navigationBarMFMailComposeViewController 导航栏
【发布时间】:2012-01-28 17:40:28
【问题描述】:

我的应用有一个自定义的导航栏背景。所以我做了一个这样的分类

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect 
{
    UIImage *image = [UIImage imageNamed: @"image.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

在我的应用程序中,我必须使用 MFMailComposeViewController。我像

一样创建它
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

但 Apple 的文档指出

重要 邮件撰写界面本身不可定制,并且不得由您的应用程序修改。此外,在呈现界面后,您的应用程序不允许对电子邮件内容进行进一步的更改。用户仍然可以使用界面编辑内容,但程序更改会被忽略。因此,您必须在呈现界面之前设置内容字段的值。

所以这意味着我不能将“image.png”作为邮件编写器视图控制器的导航栏背景。

如何做到这一点?

谢谢

【问题讨论】:

    标签: ios image email background


    【解决方案1】:

    简单地说,你不能使用标准的苹果 MFMailComposeViewController。您通常会以模态方式呈现它,因此无论如何它都会完全超出您的视野。

    如果您想要自定义外观的撰写表,则必须将其创建为具有自定义视图的自定义控制器。您还需要一个内置于您的应用程序中的邮件服务器,或者一个您可以点击的服务器来为您发送邮件。

    出于安全原因,Apple 限制了您可以使用 MFMailComposeViewController 执行的操作。

    如果我能提供更多帮助,请尽管问:)

    【讨论】:

    • “image.png”在 mailComposer 导航栏上。我想摆脱它
    • 对不起,我可能误解了这一点。所以你已经在控制器上设置了它..?如果是这种情况,那么是的,您必须在提交之前停止这样做,因为您很可能会被拒绝。虽然我所说的关于创建自定义的应该仍然有效。
    • 是的,确实如此。回头看看你做这件事的方式,你可能会侥幸逃脱。但是否值得冒险由您决定。抱歉,我无法提供更多帮助。
    • 如何仅更改此屏幕的类别?
    • 嗯,不是很容易。在您的类别中,您应该能够为您的 navBar 获取 navController。将类似于 self.navigationController。然后您应该能够将控制器放在堆栈顶部。然后检查它的类 [self.navigationController.topViewController class] == [MFMailComposeViewController class] 如果这是真的,不要设置图像。不是最优雅的解决方案,但应该可以完成这项工作。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多