簡體   English   中英

調整MFMailComposeViewController的大小,並防止其覆蓋整個屏幕

[英]Resize the MFMailComposeViewController and prevent it from covering the whole screen

我有一個MFMailComposeViewController,它使用以下方法調用:

    - (IBAction)sendEmail:(id)sender {

    NSArray *toRecipents = [NSArray arrayWithObject:@"email@email.com"];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:@"Email"];
    [mc setMessageBody:message.text isHTML:NO];
    [mc setToRecipients:toRecipents];

    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];

}

我想要控制器加載時,我希望他的高度比視圖的高度小50像素,我不希望他占據整個屏幕。 有什么辦法嗎?

編輯:我面臨的問題是,我正在調用的MFMailComposeViewController最初是在使用模態頁面卷曲效果調用的視圖控制器內部,因此卷曲效果阻止了我按下發送電子郵件按鈕! 這是一張照片

在此處輸入圖片說明

因此,無論您嘗試多少,您都無法單擊發送按鈕...在這種情況下我該怎么辦而不會被蘋果拒絕

編輯2:我可以只關閉模式卷曲頁面效果,然后彈出此視圖控制器嗎?

據我所知,沒有標准或允許的方式來做您想要的事情。
我還要擔心是否會通過批准,因為Apple指出了有關郵件撰寫者的以下事項:

要點:此類的視圖層次結構是私有的,您不能對其進行修改。 但是,您可以使用UIAppearance協議來自定義實例的外觀。 呈現郵件組合視圖控制器后,您的應用無法更改電子郵件內容。 用戶可以編輯所呈現實例的內容,但是系統會忽略編程更改。 如果要為內容字段設置值,請在顯示界面之前進行設置。 類參考

如果您對發送電子郵件有一些自定義設計要求,建議您實現自己的視圖並使用一些服務器發送電子郵件,但是我不確定您的設計要求有多難。

嘗試手動更改MFMailComposeViewController框架,並使用addSubview:而不是presentViewController:animated:completion: ::

mc.view.frame = CGRectMake(0, 20, 320, 400);
// Use addSubview: insead of [self presentViewController:mc animated:YES completion:NULL];
[self.view addSubview:mc.view];

在此處輸入圖片說明

注意:我不確定此行為是否會通過Apple App Store批准過程來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM