登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

todayWidget 下拉程序

[复制链接]
来自: Zws丶 分类: iOS精品源码 上传时间: 2017-5-17 15:13:42
Tag:程序

项目介绍:

TodayWidget

通知中心视图,下拉通知中心显示的内容

详细demo请看GitHub:https://github.com/Zws-China/TodayWidget

PhotoShoot

这里写图片描述
这里写图片描述

How To Use

这个Demo是类似于Clips的widget,完整代码我已经上传到了github点这里,Demo里面注释比较详细.
1.创建Extension
 点击“File”->”New”->”Target”


(1)UI布局:系统默认,widget的View的x坐标是和Containing App的图标坐标的bottom相对应的(参照搜狐视频效果),如果你想靠到左边去“越界”,要实现NCWidgetProviding代理方法- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets,这个defaultMarginInsets打印出来是{0, 47, 39, 0},注意看x左边是0.
    - (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets {
        return UIEdgeInsetsZero;
    }


(2)View高度问题:有的时候运行程序,view显示不出来,这个时候你可能需要[self setPreferredContentSize:(CGSize)];。不仅如此,Demo中的widget是放置了个UITableView,设置它与View的AutoLayout,结果是没起作用。。。tableView的高度是随着Cell的减少而减少,但是View的高度缺固定在最初值。因此加上这句代码来限制

    // 调整高度,根据数组的值来确定Cell的个数,从而确定视图的高度
    self.preferredContentSize = CGSizeMake(self.view.bounds.size.width, 200));


 (3)点击todayWidget事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView  deselectRowAtIndexPath:indexPath animated:YES];

    NewsModel *model = [modelArray objectAtIndex:indexPath.row];
    NSString *string = [NSString stringWithFormat:@"iOSWidgetApp://action=openNewsID=%@",model.newsID];

    [self.extensionContext openURL:[NSURL URLWithString:string] completionHandler:nil];
}

- (void)moreAction {
    [self.extensionContext openURL:[NSURL URLWithString:@"iOSWidgetApp://action=openAPP"] completionHandler:nil];
}

 (4)处理点击事件  在AppDelegate.m中添加
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"%@",url);

    NSString* prefix = @"iOSWidgetApp://action=";
    if ([[url absoluteString] rangeOfString:prefix].location != NSNotFound) {
    NSString* action = [[url absoluteString] substringFromIndex:prefix.length];
    if ([action isEqualToString:@"openAPP"]) {
        //打开APP,不用处理
    }
    else if([action containsString:@"openNewsID="]) {

        NSString *IDString = [action substringFromIndex:@"openNewsID=".length];

        NewsDetailController *newsCtrl = [[NewsDetailController alloc]init];
        newsCtrl.newsID = IDString;
        UINavigationController *NAV = (UINavigationController*)self.window.rootViewController;
        [NAV pushViewController:newsCtrl animated:YES];
    }
}

    return  YES;
}



(5)喜欢的点个星。 (*^__^*)


相关源码推荐:

我来说两句
*滑动验证:
所有评论(7)
hellokenken 2017-5-17 15:13:50
感谢分享,楼主V5~
回复
BlueManlove 2017-5-17 15:14:30
感谢大神~
回复
phoiu 2017-5-17 15:14:31
感谢分享,楼主V5~
回复
littleRed 2017-5-17 15:14:36
学习...学习...
回复
AlonMessi 2017-5-17 15:16:31
感谢分享,code4app有你更精彩
回复
kengsir 2017-5-17 15:16:50
帮帮顶顶!!
回复
Jsjddhdk 2017-5-17 15:58:25
超级喜欢
回复
678 1 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表