AJ學IOS 之微博項目實戰(12)發送微博自定義工具條代理實現點擊事件

AJ分享,必須精品markdown

 

一:效果

這裏寫圖片描述

二:封裝好的工具條

NYComposeToolbar.h

帶代理方法app

#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

三:調用

設置代理而且實現代理方法ide

/** * 添加工具條 */
- (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;
    }
}
相關文章
相關標籤/搜索