iOS组件封装与自动布局自定义表情键盘

2020-01-15 13:48:14王振洲

代码说明:

主要是对block回调的应用和给相应的组件添加相应的约束。

4.MoreView组件的封装代码就不往上贴啦,和上面的类似,下面是调用MoreView组件的运行效果,有兴趣的读者请自行编写,以上就是视图部分的代码了

iOS,组件封装,表情键盘

二. Mode部分的内容

1.先定义我们要使用的数据模型,数据模型如下,time是使用表情的时间,用于排序。

iOS,组件封装,表情键盘

2.下面编写我们的ImageModelClass类,里面封装了我们操作数据要用的方法

ImageModelClass.h的代码如下,主要是预留的对外的接口:


//
// ImageModelClass.h
// MyKeyBoard
//
// Created by 青玉伏案 on 14-9-16.
// Copyright (c) 2014年 Mrli. All rights reserved.
//
 
#import #import #import "HistoryImage.h"
 
@interface ImageModelClass : NSObject
//保存数据
-(void)save:(NSData *) image ImageText:(NSString *) imageText;
//查询所有的图片
-(NSArray *) queryAll;
@end

ImageModelClass.m的代码如下,主要是用CoreData对sqlite的操作:


// ImageModelClass.m
// MyKeyBoard
//
// Created by 青玉伏案 on 14-9-16.
// Copyright (c) 2014年 Mrli. All rights reserved.
//
 
#import "ImageModelClass.h"
 
@interface ImageModelClass ()
 
@property (nonatomic, strong) NSManagedObjectContext *manager;
 
@end
 
@implementation ImageModelClass
- (instancetype)init
{
 self = [super init];
 if (self) {
 //通过上下文获取manager
 UIApplication *application = [UIApplication sharedApplication];
 id delegate = application.delegate;
 self.manager = [delegate managedObjectContext];
 }
 return self;
}
 
-(void)save:(NSData *)image ImageText:(NSString *)imageText
{
 if (image != nil) {
 NSArray *result = [self search:imageText];
 
 HistoryImage *myImage;
 
 if (result.count == 0)
 {
 myImage = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([HistoryImage class]) inManagedObjectContext:self.manager];
 myImage.imageText = imageText;
 myImage.headerImage = image;
 myImage.time = [NSDate date];
 }
 else
 {
 myImage = result[0];
 myImage.time = [NSDate date];
 }
 
 //存储实体
 NSError *error = nil;
 if (![self.manager save:&error]) {
 NSLog(@"保存出错%@", [error localizedDescription]);
 }
 
 }
 
}
 
 
//查找
-(NSArray *)search:(NSString *) image
{
 NSArray *result;
 
 //新建查询条件
 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([HistoryImage class])];
 
 //添加谓词
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"imageText=%@",image];
 
 //把谓词给request
 [fetchRequest setPredicate:predicate];
 
 //执行查询
 NSError *error = nil;
 result = [self.manager executeFetchRequest:fetchRequest error:&error];
 if (error) {
 NSLog(@"查询错误:%@", [error localizedDescription]);
 }
 return result;
}
 
 
 
//查询所有的
-(NSArray *) queryAll
{
 //新建查询条件
 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([HistoryImage class])];
 
 //添加排序规则
 //定义排序规则
 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time" ascending:NO];
 
 //添加排序规则
 [fetchRequest setSortDescriptors:@[sortDescriptor]];
 
 
 //执行查询
 NSError *error = nil;
 NSArray *result = [self.manager executeFetchRequest:fetchRequest error:&error];
 if (error) {
 NSLog(@"查询错误:%@", [error localizedDescription]);
 }
 
 return result;
}
 
@end