最近很多人问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. iOS AvPlayer AvAudioPlayer音频的后台播放问题

    iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...

  2. android 62 手机存储目录的划分

    android下应用程序的路径和javase不同,应用程序的数据要保存自己的文件夹里面 > > getFileDir(); 获取自己的文件夹 /data/data/包名(应用程序的名字)/ ...

  3. Command Line-Version (SetACL.exe) – Syntax and Description

    For a quick start, tell SetACL the following: Object name (-on): This is the path to the object SetA ...

  4. tar命令解压、压缩gz/bz2/xz文件

    1.处理.tar.gz 压缩:tar zcf FILE.tar.gz FILEDIR 解压:tar zxf FILE.tar.gz 2.处理.tar.bz2 压缩:tar jcf FILE.tar.b ...

  5. android检查自动升级

    好像大半年没发点啥了,也不知道自己瞎忙啥,闲下来发给最近的东东<安卓在线升级> 类已经封装好了,简单的调用就OK了.这里的数据交互,我是用.NET写的一个webservice来交互.废话也 ...

  6. [时间操作] C#TimeHelper时间格式化帮助类 (转载)

    点击下载 TimeHelper.rar 主要功能如下 .将时间格式化成 年月日 的形式,如果时间为null,返回当前系统时间 .将时间格式化成 时分秒 的形式,如果时间为null,返回当前系统时间 . ...

  7. 在fragment中调用SharedPreferences

    [o] Activity中调用SharedPreferences的方式: String prefsName = "mysetting"; SharedPreferences pre ...

  8. Merge OUTPUT 高级用法综合写的一个MergeTab的存储过程

    因为工作中常用到 合并两张表中的数据,主要是写下来给自己备忘,T-SQL 中 MERGE 的用法 WHEN MATCHED THEN UPDATE -- 中加了 后面要更新的列是否都相等,如果相等就没 ...

  9. MyEclipse激活失败,解决办法

    文章参考:http://www.cnblogs.com/dingyuanxin/p/4046356.html 失败可能是:systemid和exe破解出来的那个对应不上: 1.启动MyEclipse, ...

  10. 关于HMTL -[HTML5]

    前言: 为什么学习它?(HTML5) 会不会HTML5,其实并不会影响我的开发效率,我觉得终究还是跟个人性格有关,我喜欢前沿的东西.这就好比我大学里学的计算机,但我仍然会去看一些跟专业不相关的书籍一样 ...