新浪微博客户端(42)-完善表情键盘的工具条

DJEmotionTabBar.m

//
//  DJEmotionTabBar.m
//  微博
//
//  Created by 海月高 on 16/11/26.
//  Copyright ? 2016年 yongdaimi. All rights reserved.
//

#import "DJEmotionTabBar.h"
#import "DJEmotionTabBarButton.h"

@interface DJEmotionTabBar()

@property (nonatomic,weak) UIButton *selectedBtn;

@end

@implementation DJEmotionTabBar

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        // 添加选项btn
        [self setupBtnTitle:@"最近" type:DJEmotionTabBarButtonTypeRecent];
        DJEmotionTabBarButton *defaultBtn = [self setupBtnTitle:@"默认" type:DJEmotionTabBarButtonTypeDefault];
        [self setupBtnTitle:@"Emoji" type:DJEmotionTabBarButtonTypeEmoji];
        [self setupBtnTitle:@"浪小花" type:DJEmotionTabBarButtonTypeLxh];

        // 设置“默认”选项的btn为选中状态
        [self btnClick:defaultBtn];

    }
    return self;
}

- (DJEmotionTabBarButton *)setupBtnTitle:(NSString *)title type:(DJEmotionTabBarButtonType)buttonType{

    DJEmotionTabBarButton *btn = [[DJEmotionTabBarButton alloc] init];
    [btn setTitle:title forState:UIControlStateNormal];

    [btn setTitleColor:DJColor(140,140,140) forState:UIControlStateNormal];
    [btn setTitleColor:DJColor(86, 86, 86) forState:UIControlStateSelected];

    [btn setBackgroundImage:[UIImage imageNamed:@"compose_emotion_table_normal"] forState:UIControlStateNormal];
    [btn setBackgroundImage:[UIImage imageNamed:@"compose_emotion_table_selected"] forState:UIControlStateSelected];
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];

    btn.titleLabel.font = [UIFont systemFontOfSize:13];

    [btn setTag:buttonType];

    [self addSubview:btn];

    return btn;

}

- (void)layoutSubviews {

    [super layoutSubviews];
    NSUInteger count =  self.subviews.count;
    CGFloat btnY = 0;
    CGFloat btnH = self.height;
    CGFloat btnW = self.width / count;
    for (int i = 0; i < count; i++) {
        UIButton *btn = self.subviews[i];
        btn.x = i * btnW;
        btn.y = btnY;
        btn.width = btnW;
        btn.height = btnH;
    }

}

- (void)btnClick:(DJEmotionTabBarButton *)btn {

    self.selectedBtn.selected = NO;
    btn.selected = YES;
    self.selectedBtn = btn;

    // 传递点击消息
    if ([self.delegate respondsToSelector:@selector(emotionTabBar:didSelectedButtonType:)]) {
        DJEmotionTabBarButtonType type =  (DJEmotionTabBarButtonType)btn.tag;
        [self.delegate emotionTabBar:self didSelectedButtonType:type];
    }

}

@end

最终效果:

时间: 2024-11-10 01:03:40

新浪微博客户端(42)-完善表情键盘的工具条的相关文章

新浪微博客户端(41)-切换表情键盘

DJComposeViewController.m #pragma mark - 切换键盘 - (void)switchKeyboard { // textView.inputView 代表的就是键盘 if (self.textView.inputView) { // 默认self.textView.inputView = nil, 为nil则代表默认为系统键盘 self.textView.inputView = nil; } else { DJEmotionKeyboard *emotionK

新浪微博客户端(43)-切换表情控件

DJEmotionKeyboard.m #import "DJEmotionKeyboard.h" #import "DJEmotionListView.h" #import "DJEmotionTabBar.h" #import "DJEmotion.h" #import "MJExtension.h" @interface DJEmotionKeyboard() <DJEmotionTabBarD

新浪微博客户端(45)-显示表情

DJEmotionListView.m - (void)setEmotions:(NSArray *)emotions { _emotions = emotions; // emotion 总个数 NSUInteger emotionCount = emotions.count; // 页码总个数 NSUInteger pageNums = (emotionCount + DJEmotionPageSize - 1) / DJEmotionPageSize; // 更新pageControl 显

iOS开发——Swift实战篇&amp;通知之键盘的现实与隐藏(加键盘工具条)

看这篇文章之前,建议读者先了解一下通知NSNotifation的通信原理 不好描述,我先上图: 就是点击“完成”可以隐藏键盘和自己,键盘出来时他们也跟着出来,对,就是这种效果,非常常用 1,设置keyboardHeaderview和“完成”(这里的self.keyboardHeaderView设置成了self对象) 1 self.keyboardHeaderView.frame = CGRect(x: 0,y: DeviceFrame.height+StatusBarFrame.height,w

新浪微博客户端(38)-显示键盘上的工具条

DJComposeToolbar.m #import "DJComposeToolbar.h" @implementation DJComposeToolbar - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNa

android 新浪微博客户端的表情功能的实现

这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片的命名要用新浪微博表情原来的命名比如 新浪的害羞表情是shame.gif 那么你在本地也得命名为shame.gif,命名相同主要是为了能够匹配表情对应的code.2.把本地的表情都放进android的资源文件里----drawable下面3.访问新浪的表情接口(新浪返回的数据类型有json和xml两

iOS开发之自定义表情键盘(组件封装与自动布局)

下面的东西是编写自定义的表情键盘,话不多说,开门见山吧!下面主要用到的知识有MVC, iOS开发中的自动布局,自定义组件的封装与使用,Block回调,CoreData的使用.有的小伙伴可能会问写一个自定义表情键盘肿么这么麻烦?下面将会介绍我们如何用上面提到的东西来定义我们的表情键盘的.下面的内容会比较多,这篇博文还是比较有料的. 还是那句话写技术博客是少不了代码的,下面会结合代码来回顾一下iOS的知识,本篇博文中用到的知识点在前面的博客中都能找到相应的内容,本篇算是一个小小的功能整合.先来张图看

ios开发之--仿(微信)自定义表情键盘

先附上demo:https://github.com/hgl753951/CusEmoji.git 效果图如下: 先说下具体的实现功能: 1,本地加载了一些H5的代码,直接使用webview的load方法加载出来的 2,获取web的动态高度,然后创建tableview,把webview加到一个tableview的headerview上, 3,实现cell的自定义高度,是用xib实现的 4,评论功能的实现,自定表情键盘,可以发送表情,文字等相关信息 这个demo里面有2个效果,第一个是我自己写的很

iOS_仿QQ表情键盘

当UITextFiled和UITextView这种文本输入类控件成为第一响应者时,弹出的键盘由他们的一个UIView类的inputView属性来控制,当inputView为nil时会弹出系统的键盘,想要弹出自定义的键盘,将我们自定义的UIView对象给inputView属性赋值即可.表情键盘重点在于排列各个表情和删除键,以及表情键盘上的各种回调设置: 下面为键盘预览图,兼容了竖屏各版本适配,横屏没有兼顾.横屏适配参见这篇博客iOS之自定义表情键盘 图1为6的常用表情,图2为6的全部表情,图3为5