zoukankan      html  css  js  c++  java
  • AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件

    AJ分享,必须精品

    一:效果

    这里写图片描述

    二:封装好的工具条

    NYComposeToolbar.h

    带代理方法

    
    
    #import <UIKit/UIKit.h>
    
    typedef enum {
        NYComposeToolbarButtonTypeCamera, // 拍照
        NYComposeToolbarButtonTypePicture, // 相册
        NYComposeToolbarButtonTypeMention, // @
        NYComposeToolbarButtonTypeTrend, // #
        NYComposeToolbarButtonTypeEmotion // 表情
    } NYComposeToolbarButtonType;
    
    @class NYComposeToolbar;
    
    @protocol NYComposeToolbarDelegate <NSObject>
    @optional
    - (void)composeToolbar:(NYComposeToolbar *)toolbar didClickButton:(NYComposeToolbarButtonType)buttonType;
    @end
    
    @interface NYComposeToolbar : UIView
    @property (nonatomic, weak) id<NYComposeToolbarDelegate> delegate;
    @end
    

    NYComposeToolbar.m

    //
    //  NYComposeToolbar.m
    //  Created by apple on 14-10-20.
    //  Copyright (c) 2014年 heima. All rights reserved.
    //
    
    #import "NYComposeToolbar.h"
    
    @implementation NYComposeToolbar
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"compose_toolbar_background"]];
    
            // 初始化按钮
            [self setupBtn:@"compose_camerabutton_background" highImage:@"compose_camerabutton_background_highlighted" type:NYComposeToolbarButtonTypeCamera];
    
            [self setupBtn:@"compose_toolbar_picture" highImage:@"compose_toolbar_picture_highlighted" type:NYComposeToolbarButtonTypePicture];
    
            [self setupBtn:@"compose_mentionbutton_background" highImage:@"compose_mentionbutton_background_highlighted" type:NYComposeToolbarButtonTypeMention];
    
            [self setupBtn:@"compose_trendbutton_background" highImage:@"compose_trendbutton_background_highlighted" type:NYComposeToolbarButtonTypeTrend];
    
            [self setupBtn:@"compose_emoticonbutton_background" highImage:@"compose_emoticonbutton_background_highlighted" type:NYComposeToolbarButtonTypeEmotion];
        }
        return self;
    }
    
    /**
     * 创建一个按钮
     */
    - (void)setupBtn:(NSString *)image highImage:(NSString *)highImage type:(NYComposeToolbarButtonType)type
    {
        UIButton *btn = [[UIButton alloc] init];
        [btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
        [btn setImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        btn.tag = type;
        [self addSubview:btn];
    }
    
    - (void)layoutSubviews
    {
        [super layoutSubviews];
    
        // 设置所有按钮的frame
        NSUInteger count = self.subviews.count;
        CGFloat btnW = self.width / count;
        CGFloat btnH = self.height;
        for (NSUInteger i = 0; i<count; i++) {
            UIButton *btn = self.subviews[i];
            btn.y = 0;
            btn.width = btnW;
            btn.x = i * btnW;
            btn.height = btnH;
        }
    }
    
    - (void)btnClick:(UIButton *)btn
    {
        if ([self.delegate respondsToSelector:@selector(composeToolbar:didClickButton:)]) {
    //        NSUInteger index = (NSUInteger)(btn.x / btn.width);
            [self.delegate composeToolbar:self didClickButton:btn.tag];
        }
    }
    @end
    

    三:调用

    设置代理并且实现代理方法

    /**
     * 添加工具条
     */
    - (void)setupToolbar
    {
        NYComposeToolbar *toolbar = [[NYComposeToolbar alloc] init];
        toolbar.width = self.view.width;
        toolbar.height = 44;
        toolbar.y = self.view.height - toolbar.height;
        toolbar.delegate = self;
        [self.view addSubview:toolbar];
        self.toolbar = toolbar;
    }
    

    代理方法

    #pragma mark - NYComposeToolbarDelegate
    - (void)composeToolbar:(NYComposeToolbar *)toolbar didClickButton:(NYComposeToolbarButtonType)buttonType
    {
        switch (buttonType) {
            case NYComposeToolbarButtonTypeCamera: // 拍照
    //            [self openCamera];
                NYLog(@"--- 拍照");
                break;
    
            case NYComposeToolbarButtonTypePicture: // 相册
                NYLog(@"--- 相册");
    //            [self openAlbum];
                break;
    
            case NYComposeToolbarButtonTypeMention: // @
                NYLog(@"--- @");
                break;
    
            case NYComposeToolbarButtonTypeTrend: // #
                NYLog(@"--- #");
                break;
    
            case NYComposeToolbarButtonTypeEmotion: // 表情键盘
                NYLog(@"--- 表情");
                break;
        }
    }
    
  • 相关阅读:
    PHP的资源类型
    windows 配置 apache的多个站点
    php 压缩数据存储
    php统计图类库JpGraph
    php之ThinkPHP的memcached类的修改
    linux 安装报错:pkg-config not found
    Mysql清空表(truncate)与删除表中数据(delete)的区别
    【MySQL】查看MySQL配置文件路径及相关配置
    phper
    http 同步异步请求
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990285.html
Copyright © 2011-2022 走看看