• 封装类之------底部弹框分享


    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 }
  • 相关阅读:
    [Groovy] List里的Inject方法
    [Groovy]你意想不到的用法
    buildr学习笔记(1): buildr的安装
    [Groovy]如何在Groovy里得到命令行的返回值
    underscore.js
    [Groovy] *符号在Groovy里的一种特殊用法
    [Groovy]如何定义和使用一个Java里的Enum类型
    [Ruby]$: 是什么意思?
    Optional Parameter/Default Values
    如何在Rake 的Task里加入多个输入参数
  • 原文地址:https://www.cnblogs.com/crazygeek/p/6527164.html
Copyright © 2020-2023  润新知