最近很多人问ShareSDK的授权视图和分享视图的导航栏样式与应用风格不一致,能否修改导航栏的样式?那么这里我就2.6.1版本进行说明(还在使用1.x版本的朋友建议升级到2.x版本,在新版本中可定制的东西比旧版本更多更灵活哦)。

其实要修改导航栏需要在分享接口(showShareActionSheet或者showShareView)中指定authOptions的viewDelegate和shareOptions中的shareViewDelegate参数。其中authOptions是授权相关的设置,而shareOptions则是分享相关的设置。那么这两个对象都可以通过ShareSDK相关方法进行初始化,如下面代码所示:

 

以上两段代码就是对authOptions和shareOptions的构造,那么authOptions中有一个参数叫viewDelegate,此参数是一个实现了ISSViewDelegate的协议对象。只要实现了ISSViewDelegate的对象都可以传入此参数。而shareOptions中有一个参数叫shareViewDelegate,此参数是实现了ISSShareViewDelegate的协议对象,而ISSShareViewDelegate是继承了ISSViewDelegate的,因此拥有ISSViewDelegate的所有委托方法,并且有自己的ShareViewDelegate的特有方法。

那么对于需要修改导航栏样式来说,只要实现ISSViewDelegate的viewOnWillDisplay方法即可,也就是说在视图将要显示的时候来调整导航样式。我们可以在要显示分享视图的ViewController中实现ISSViewDelegate协议(注:如果分享界面也要调整样式,那么只要实现ISSShareViewDelegate即可)。我们这里要显示分享界面的是DemoViewController,那么在DemoViewController.h中修改代码如下:

然后转到DemoViewController.m文件,在类实现中写入下面代码:

此委托方法中第一个参数就是将要显示的ViewController,如果是授权那么就是授权的ViewController,如果是分享那么就是分享的ViewController。在通过这个ViewController的navigationController可以取得导航控制器,然后在导航控制器中就可以去取到导航栏的对象了。那么就可以对导航栏进行调整了。

委托方法实现后,然后传入到authOptions和shareOptions中(如最上面的代码所示),然后把authOptions和shareOptions传入分享接口即可。代码如下所示:

 

编译一下看看是否有已经换成了自己的导航栏背景了呢?

最佳实践:对于应用中如果多个地方有使用ShareSDK,那么可以创建一个独立的委托对象,专门针对样式作调整的,那么这样只要声明为全局的对象,就可以到处引用了。可以参考demo中的AGViewDelegate对象。

ShareSDK(iOS版)开发实践:自定义授权视图和分享视图导航栏的更多相关文章

  1. iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入

    iOS 11开发教程(十七)iOS11应用视图之使用按钮接收用户输入 在iOS中提供了很多的控件以及视图来丰富用户界面,对于这些视图以及控件我们在上一章中做了简单的介绍.本章我们将详细讲解这些视图. ...

  2. iOS UITableView表视图滚动隐藏UINavigationController导航栏

    UITableView 继承于UIScrollView 所以UIScrollView 的代理方法相同适用于UITableView 中 隐藏导航栏的方法为: self.navigationControl ...

  3. jquery自定义插件-参数化配置多级菜单导航栏插件

    1 自定义菜单导航栏插件的必要性 看图说话,下面是利用自定义的菜单导航栏插件simpleMenu创建的网站导航示例: 插件默认提供的是如上图的导航栏样式,即一二级菜单为横向分布:三四级菜单为纵向分布. ...

  4. [Xcode 实际操作]三、视图控制器-(6)UINavigationController导航栏样式

    目录:[Swift]Xcode实际操作 本文将演示对导航栏进行样式设置,以及更改导航顶部的提示区. 选择编辑第一个视图控制器文件. import UIKit class FirstSubViewCon ...

  5. Swift ios应用开发实践

  6. 第十三篇、Swift_Nav自定义返回按钮后或者隐藏导航栏,Pop返回手势失效的解决方法 Pop全局返回添加的方法

    边缘的pop返回手势: override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.purple ...

  7. OC--设置视图控制器,从导航栏的下边缘开始

    self.edgesForExtendedLayout = UIRectEdgeNone;

  8. android 开发 修改系统背景(状态栏颜色、导航栏颜色、标题栏颜色等等)

    1.打开values下的styles.xml 发现有以下代码: <resources> <!-- Base application theme. --> <style n ...

  9. iOS 自定义导航栏笔记

    一.UINavigationBar的结构 导航栏几乎是每个页面都会碰到的问题,一般两种处理方式:1.隐藏掉不显示 2.自定义 1. 添加导航栏 TestViewController * mainVC ...

随机推荐

  1. [每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10784599 . 正确答案:A 将逻辑存储与物理存储分开是关系数据库范例的必要部分.关系数 ...

  2. Shell变量命名规则

    变量与变量内容以一个等号『=』来连结,如下所示: 『myname=chenfei0801』 等号两边不能直接接空格符,如下所示为错误: 『myname = chenfei0801』或『myname=c ...

  3. Android开发进阶:如何读写Android文件

    Android主要有四大主要组件组成:Activity.ContentProvider.Service.Intent组成.Android文件的运行主要需要读写四大组件的文件.本文将介绍如何读写Andr ...

  4. Google C++ Style Guide在C++11普及后的变化

    转 http://www.cnblogs.com/chen3feng/p/5972967.html?from=timeline&isappinstalled=0&lwfrom=user ...

  5. java 文件和流

    最近工作中涉及到一些文件操作的东西,闲下来刚好做个整理. 控制台IO 在控制台使用键盘作为标准输入并使用终端窗口(在windows下,经常是命令提示符或者是PowerShell:在linuxx/OS ...

  6. 百度,人人,新浪,腾讯等分享Js代码

    <!-- Baidu Button BEGIN -->                        <div id="bdshare" class=" ...

  7. jvm - 内存结构以其解析

    可以将jvm粗略分为以下部分: Heap Memory:存储java对象. Non-Heap Memory:存储加载的class文件,以及其他meta-data信息. Other:存储java代码,j ...

  8. <artifactId>maven-compiler-plugin</artifactId>

    根据名字就可以看出来,就是控制编译环境的 <plugin>            <groupId>org.apache.maven.plugins</groupId&g ...

  9. $(obj).data() 绑定和获取数据的应用

    1.解说 data() 方法向被选元素附加数据,或者从被选元素获取数据. 例如:$("#id").data("name","xiao"); ...

  10. CSS制作hover下划线动画

    .demo1{ position: relative; text-decoration: none; font-size: 20px; color: #333; } .demo1:before{ co ...