封装类之------底部弹框分享
git中有Demo
GitHub地址:https://github.com/wmwgh/shareView.git
公司需求弹框分享,要求第一行为固定4个按钮,后面的按钮个数为可变的,并且当按钮的个数超过两行时,只显示两行,需要滑动查看更多的按钮,所以我用collection实现的
自己写了一个封装了类,可以实现固定按钮和可变按钮的组合,也可以单独用collection实现动态按钮布局(修改引用类即可)
操作比较简单,只需要传数据源和实现点击方法
在控制器.m中引入
1 #import "WMWShareBaseView.h" 2 #import "OneModel.h"
传入数据源
1 - (void)loadClicked 2 { 3 // 传输数据 4 // 第一行为四个固定按钮 修改属性值在WMWShareBtnView.m中,点击方法在最底部 5 // 下面的按钮为可变按钮,会根据数据源的变化而变化,View高度会自动适应,点击方法在底部 6 7 NSArray *dataArray = @[ 8 @{@"title": @"测试1", @"iamgeUrl": @"share_platform_qqfriends@2x", @"skipUrl": @"http://www.baidu.com"}, 9 @{@"title": @"测试2", @"iamgeUrl": @"share_platform_wechattimeline@2x", @"skipUrl": @"http://www.baidu.com"}, 10 @{@"title": @"测试3", @"iamgeUrl": @"share_platform_wechat@2x", @"skipUrl": @"http://www.baidu.com"}, 11 @{@"title": @"测试4", @"iamgeUrl": @"share_platform_qqfriends@2x", @"skipUrl": @"http://www.baidu.com"}, 12 @{@"title": @"测试1", @"iamgeUrl": @"share_platform_wechattimeline@2x", @"skipUrl": @"http://www.baidu.com"}, 13 @{@"title": @"测试4", @"iamgeUrl": @"share_platform_qqfriends@2x", @"skipUrl": @"http://www.baidu.com"}, 14 @{@"title": @"测试1", @"iamgeUrl": @"share_platform_wechattimeline@2x", @"skipUrl": @"http://www.baidu.com"}, 15 @{@"title": @"测试2", @"iamgeUrl": @"share_platform_qqfriends@2x", @"skipUrl": @"http://www.baidu.com"}, 16 @{@"title": @"测试3", @"iamgeUrl": @"share_platform_wechat@2x", @"skipUrl": @"http://www.baidu.com"}, 17 @{@"title": @"测试4", @"iamgeUrl": @"share_platform_wechattimeline@2x", @"skipUrl": @"http://www.baidu.com"}]; 18 19 NSMutableArray *tempArray = [NSMutableArray array]; 20 for (NSDictionary *dic in dataArray) { 21 OneModel *oneModel = [[OneModel alloc] init]; 22 [oneModel setValuesForKeysWithDictionary:dic]; 23 [tempArray addObject:oneModel]; 24 } 25 26 _shareView = [[WMWShareBaseView alloc] initWithCollectionDataArray:tempArray]; 27 [_shareView showInView:self.view]; 28 29 }
点击方法分别在两个类中
固定按钮点击方法
1 #pragma mark --- 固定按钮点击方法 2 - (void) btnViewClicked:(UITapGestureRecognizer *)recognizer { 3 switch (recognizer.view.tag) { 4 case 1000 : 5 { 6 NSLog(@"微信"); 7 } 8 break; 9 case 1001 : 10 { 11 NSLog(@"朋友圈"); 12 } 13 break; 14 case 1002 : 15 { 16 NSLog(@"QQ"); 17 } 18 break; 19 case 1003 : 20 { 21 NSLog(@"多图"); 22 } 23 break; 24 default: 25 break; 26 } 27 28 }
Collection代理方法
1 #pragma mark UICollectionViewDelegate的代理方法 2 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ 3 NSLog(@"%ld", indexPath.row); 4 }