文档章节

ShareSDK(iOS版)开发实践:自定义授权视图和分享视图导航栏

vimfung
 vimfung
发布于 2013/07/31 23:36
字数 805
阅读 5374
收藏 4

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

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

id<ISSAuthOptions> authOptions = [ShareSDK authOptionsWithAutoAuth:YES
                                  allowCallback:NO
                                  authViewStyle:SSAuthViewStyleFullScreenPopup
                                  viewDelegate:self
                                  authManagerViewDelegate:self];

 

id<ISSShareOptions> shareOptions = [ShareSDK defaultShareOptionsWithTitle:@"内容分享"
                                    oneKeyShareList:[NSArray defaultOneKeyShareList]
                                    qqButtonHidden:YES
                                    wxSessionButtonHidden:YES
                                    wxTimelineButtonHidden:YES
                                    showKeyboardOnAppear:NO
                                    shareViewDelegate:self
                                    friendsViewDelegate:self
                                    picViewerViewDelegate:nil];

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

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

@interface DemoViewController : UIViewController <ISSShareViewDelegate>

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

- (void)viewOnWillDisplay:(UIViewController *)viewController shareType:(ShareType)shareType
{
    [viewController.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"iPhoneNavigationBarBG.png"]];
}

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

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

//弹出分享菜单
    [ShareSDK showShareActionSheet:nil
                         shareList:nil
                           content:publishContent
                     statusBarTips:YES
                       authOptions:authOptions
                      shareOptions:shareOptions
                            result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) { 
                                if (state == SSPublishContentStateSuccess) {
                                    NSLog(@"分享成功");
                                }
                                else if (state == SSPublishContentStateFail) {
                                    NSLog(@"分享失败,错误码:%d,错误描述:%@", [error errorCode], [error errorDescription]);
                                }
                            }];

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

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

© 著作权归作者所有

vimfung

vimfung

粉丝 61
博文 59
码字总数 85338
作品 4
广州
技术主管
私信 提问
加载中

评论(2)

vimfung
vimfung 博主

引用来自“qiujunwei”的评论

我现在要设置新浪微博分享时的UI ,因为分享图片的时候由于框架中的图片大小固定,导致分享图片被压缩,求指点,谢谢
你用的是哪个分享UI呢?
q
qiujunwei
我现在要设置新浪微博分享时的UI ,因为分享图片的时候由于框架中的图片大小固定,导致分享图片被压缩,求指点,谢谢
iOS自定义分享界面(集成ShareSDK社会化分享组件)

先定义一键分享列表 NSArray *oneKeyShareList = [ShareSDK getShareListWithType : ShareTypeSinaWeibo, ShareTypeTencentWeibo, nil ]; 再创建一个ShareOptions对象,用来定义分享行为。并......

lanis
2014/08/12
8.4K
1
iOS 分享-ShareSDK

关于iOS的分享太常用也太多第三方,其中ShareSDK在使用上很方便,UI可自定义,完美!大致总结下集成思路,以免吃俩碗米饭又忘记了SD君的模样。 1⃣️在share SDK 平台创建自己的应用。 创建应...

Nlinger
2017/03/21
0
0
如何通过ShareSDK的 Unity3D快速接入Android/iOS分享与授权

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎;在游戏中...

MobService
06/17
12
0
iOS开发:如何使用ShareREC让游戏APP快速拥有录像分享功能

概要:ShareREC是Mob推出的最完美手游录像解决方案,开发者只需3分钟快速集成,即可让游戏拥有强大的手游录像、语音及视频解说,第三方分享功能,同时后台还能提供完善的数据统计,可供实时了...

lanis
2014/12/30
589
0
Unity3D如何集成ShareREC手游录像分享SDK

一、准备工具 到Mob官网 下载 ShareREC For Unity3d SDK包。 工具概要:ShareREC是Mob推出的最完美手游录像解决方案,开发者只需3分钟快速集成,即可让游戏拥有强大的手游录像、语音及视频解...

Mob-原ShareSDK
2015/03/02
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

iota硬件集成实战教程

本教程面向iota初学者,我们将学习如何开发基于指定IOTA地址的余额来闭合或断开一个连接到树莓派上的继电器,点亮或熄灭LED。教程虽然简单,但足以展示IOTA的强大能力。 我们将使用一个联网的...

汇智网教程
14分钟前
4
0
influxdb-1.7.8绿色安装-centos7

influxdb作为一款性能强悍的时序数据库, 一旦拥有, 别无所求. 本文介绍它的绿色安装方法. 环境准备, 下载, 解压. [dev5@7bdc6644c7c4 influxdb-1.7.8] cat /etc/redhat-release CentOS Linu...

dev5
18分钟前
2
0
Java 11 新特性

java 11 是继 java8 之后的第一个LTS版本。因此有必要针对它进行一些深入的学习,虽然短时间内java8 还是主流版本。当然,如果从java8基础上升级,几乎可以确定目标就是java11。 同时也要明确...

polly
19分钟前
2
0
SVG

本文转载于:专业的前端网站➯SVG SVG 是使用 XML 来描述二维图形和绘图程序的语言。 SVG 使用 XML 编写。 一、什么是SVG? SVG 指可伸缩矢量图形,使用 XML 格式定义图形,SVG图像在放大或改...

前端老手
20分钟前
3
0
zabbix server proxy

server./configure --prefix=/data/zabbix3.4 --enable-server --enable-agent --with-net-snmp --with-libcurl --enable-proxy --with-mysql=/data/mysql-5.6.44-linux-glibc2.12-x8......

雁南飞丶
20分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部