专栏首页Guangdong Qi调用 MFMessageComposeViewController UINavigationBar 高出一截

调用 MFMessageComposeViewController UINavigationBar 高出一截

项目告一段落,总结一下项目中遇到的坑

使用 MFMessageComposeViewController 在程序内部发送短信,代码很简单

MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];
controller.recipients = @[收件人手机号码1,收件人手机号码2,收件人手机号码3];
controller.body = 短信内容

controller.messageComposeDelegate = self;

[self presentViewController:controller animated:YES completion:nil];

然后是代理回调

#pragma mark ---- 发短信代理
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    [self dismissViewControllerAnimated:YES completion:nil];
    switch (result) {
        case MessageComposeResultSent:
            //信息传送成功
        {
            break;
        }
        case MessageComposeResultFailed:
            //信息传送失败
            
            break;
        case MessageComposeResultCancelled:
            //信息被用户取消传送
            
            break;
        default:
            break;
    }
}

但是当我全局设置 NavigationBar 的时候会影响 MFMessageComposeViewController 的 NavigationBar 全局设置 NavigationBar 错误代码如下:

//NavigationBar 背景颜色
[[UINavigationBar appearance]setBarTintColor:NaviBarTintColor];


[[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:NaviBarTintColor] forBarMetrics:UIBarMetricsDefault];

[[UINavigationBar appearance] setShadowImage:[UIImage new]];

//NavigationBar 文字属性
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:WhiteColor}];

修改方法给NavigationViewController 抽出一个基类 在 viewDidLoad 全局修改NavigationBar 如下

[self.navigationBar setTintColor:WhiteColor];

[self.navigationBar setBackgroundImage:[UIImage imageWithColor:NaviBarTintColor] forBarMetrics:UIBarMetricsDefault];

[self.navigationBar setShadowImage:[UIImage new]];

[self.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:WhiteColor}];

之后会发现 MFMessageComposeViewController 的NavigationBar 是系统主题的,可以修改为自己的主题,在创建的时候加入

MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];
controller.recipients = @[telphone];
controller.body = self.friendProfitModel.inviteBuyDebtSmsContent;
controller.navigationBar.tintColor = WHColorBlack;

controller.messageComposeDelegate = self;

[self presentViewController:controller animated:YES completion:nil];

UIBarButtonItem *bar=    [[UIBarButtonItem alloc]initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarButtonItemAction)];


[[[[controller viewControllers] lastObject] navigationItem] setRightBarButtonItem:bar];

[[[[controller viewControllers] lastObject] navigationItem] setTitle:@"邀请好友"];

代理回调不变

好本坑完美解决

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小Q-百度定位及递增递减的Label数字未完待续,持续更新中

    GuangdongQi
  • 小Q项目框架搭建及会动的Tabbar未完待续,持续更新中

    GuangdongQi
  • 黑技术之百度网盘大文件下载直奔主题

    GuangdongQi
  • 错误、异常

    tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl 解释器实现的,...

    py3study
  • 基于tkinter的GUI编程

    tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl 解释器实现的,...

    py3study
  • PyQt5 日历控件(QCalendarWidget)

    点击日期时会发射.clicked 信号,信号参数类型为PyQt5.QtCore.QDate

    用户6021899
  • iOS10新特性-自定义iMessage application

    czjwarrior
  • 深度学习如何入门?

    大家好,这里是我的第一篇文章,我希望讲一讲深度学习如何入门,这是我研究生阶段师兄安排的入门方式,希望给大家带来帮助。首先,需要有一定的知识储备,如何储备相关知识...

    AI深度学习求索
  • vue -- 路由懒加载

    我们可以把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件。

    小蔚
  • 2018年度国家科技奖提名1446项,信息科学组47项提名

    3月23日,国家科学技术奖励工作办公室发布第89号公告:2018年度国家科学技术奖提名工作已结束,我办共收到有关单位和专家提名的国家自然科学奖项目272项,技术...

    WZEARW

扫码关注云+社区

领取腾讯云代金券