废话不多说 直接上头文件 自己去Git下载吧 Git Link, press here to download
先看一下JSON 格式
[
{
"width": 200,
"height": 100,
"url": "http://f.hiphotos.baidu.com/image/pic/item/8435e5dde71190efeb7e4cc1cc1b9d16fdfa6023.jpg",
"type": "img"
},
{
"color": "blue",
"content": "this is first part and you can set your txt here. remember set default config",
"size": 30,
"type": "txt"
},
{
"color": "orange",
"content": "this is second part",
"size": 14,
"type": "txt"
},
{
"width": 100,
"height": 200,
"url": "http://h.hiphotos.baidu.com/image/pic/item/0824ab18972bd40762936ee279899e510fb3095c.jpg",
"type": "img"
},
{
"color": "red",
"content": "this is third part",
"size": 20,
"type": "txt"
},
{
"color": "blue",
"content": "press here to jump",
"size": 40,
"url": "http://www.baidu.com",
"type": "link"
}
]
然后看一下使用方法
XDisplayView * showView = [[XDisplayView alloc] initWithFrame:CGRectMake(0, 64, CGRectGetWidth([UIScreen mainScreen].bounds), 100)];
XViewHandle * config = [[XViewHandle alloc] init];
config.width = showView.width;
NSString * path = [[NSBundle mainBundle] pathForResource:@"content" ofType:@"json"];
XCoreTextData * data = [XFrameParser parseTemplateFile:path config:config];
showView.data = data;
showView.height = data.height;
showView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:showView];
然后看一下实现的头文件
//
// XViewHandle.h
// XCoreText
//
// Created by Dylan on 15/1/17.
// Copyright (c) 2015年 Dylan. All rights reserved.
//
import
import
import
/*!
- @brief 这里是DebugLog 大家都很常用吧 所以不啰嗦了
*/
ifdef DEBUG
define XLog(...) NSLog(VA_ARGS);
else
define XLog(...);
endif
/*!
- @brief 颜色的定义呦
*/
define XRGB(R, G, B) [UIColor colorWithRed: R/255. green: G/255. blue: B/255. alpha: 1.0];
/*!
- @brief 快速单例呦
*/
undef X_SINGLETON_DEC
define X_SINGLETON_DEC( __class ) \
- (__class *)sharedInstance;
undef X_SINGLETON_DEF
define X_SINGLETON_DEF( __class ) \
- (__class *)sharedInstance
{
static dispatch_once_t once;
static __class * singleton;
dispatch_once( &once, ^{ singleton = [[__class alloc] init]; } );
return singleton;
}
/*!
- @brief 主线程呦
*/
define dispatch_main_safe(block)\
if ([NSThread isMainThread]) {
block();
} else {
dispatch_async(dispatch_get_main_queue(), block);
}
/*!
- @brief Frame ParserConfig Attributes
*/
@interface XViewHandle : NSObject
X_SINGLETON_DEC(XViewHandle)
/*!
- @brief 一些基本的配置属性 Model
*/
@property (assign, nonatomic) CGFloat width;
@property (assign, nonatomic) CGFloat fontSize;
@property (assign, nonatomic) CGFloat lineSpace;
@property (strong, nonatomic) UIColor * textColor;
/*!
- @brief 两个关于颜色的类方法 根据名称得到颜色 根据JSON得到颜色
*/
- (UIColor *)colorWithName: (NSString *)string;
// JSON: [12, 22, 33]
- (UIColor *)colorWithRGBArray: (NSArray *)array;
@end
/*!
- @brief UIView ex
*/
@interface UIView (frameHandle)
/*!
- @brief 关于UIView的一些扩展喽 很方便的 开发中也可以使用呦
*/
(CGFloat)x;
(CGFloat)y;
(CGFloat)width;
(CGFloat)height;
(void)setX: (CGFloat)x;
(void)setY: (CGFloat)y;
(void)setWidth: (CGFloat)width;
(void)setHeight: (CGFloat)height;
@end
/*!
- @brief Build CTFrameRef.
*/
@class XCoreTextData;
static NSMutableAttributedString * result;
@interface XFrameParser : NSObject
/*!
- @brief 解析的内容 仅限文字内容的多样化
-
- @param content 内容
- @param config 配置 就是上边说的基本配置嘿嘿
-
- @return 返回这个东西喽 一个TextData模型
*/
- (XCoreTextData *)parseContent: (NSString *)content config: (XViewHandle *)config;
/*!
- @brief 解析AttributeString喽、
-
- @param content 内容 就是一个AttributeString
- @param config 配置
-
- @return 返回TextData模型
*/
- (XCoreTextData *)parseAttributesContent: (NSMutableAttributedString *)content config: (XViewHandle *)config;
/*!
- @brief 这个是最重要的方法 解析JSON文件
-
- @param filePath JSON文件的路径 也可以自己去更改方法 改为JSON内容 都是可以的呦
- @param config 这里的配置就用来配置一下width 别的属性的值 你当然写到JSON文档中了、 JSON格式可以参考下边的content.JSON 文件呦
-
- @return 返回TextData这个玩意
*/
- (XCoreTextData *)parseTemplateFile: (NSString *)filePath config: (XViewHandle *)config;
@end
/*!
- @brief Save CTFrameRef and Frame.
*/
@interface XCoreTextData : NSObject
/*!
- @brief 其实绘制 就是要ctFrame
*/
@property (assign, nonatomic) CTFrameRef ctFrame;
@property (assign, nonatomic) CGFloat height;
// 包含的图片数组
@property (strong, nonatomic) NSMutableArray * imageArray;
// 包含的链接数组
@property (strong, nonatomic) NSMutableArray * linkArray;
@end
/*!
- @brief imageDataModel
*/
@interface XCoreImageData : NSObject
// 这是image的模型呦、
@property (strong, nonatomic) NSString * url;
@property (assign, nonatomic) CGFloat position;
@property (assign, nonatomic) CGRect imagePosition;
@end
/*!
- @brief linkDataModel
*/
@interface XCoreLinkData : NSObject
// 这是链接的模型
@property (strong, nonatomic) NSString * title;
@property (strong, nonatomic) NSString * url;
@property (assign, nonatomic) NSRange range;
@end
@interface XTouch : NSObject
// 这是检测连接点击的方法 直接在tap手势的回掉方法里边 调用这个类方法就可以了。
- (XCoreLinkData *)touchLinkInView: (UIView *)view atPoint: (CGPoint)point data: (XCoreTextData *)data;
@end
/*! JSON Format Example
[
{
"color": "blue", // or you can change this with Array contains R G B
"content": "With More Text", // content
"size": 16 // font size
"type": "txt" // type mains your content.
},
{
"width": 12., // image size
"height": 12.,
"url": "image url", // image url
"type": "img"
},
{
"color": "blue", // link color
"content": "Press Here", // link tip
"url": "http://www.baidu.com" // href
"type": "link"
}
]
*/
注释很明确、 h文件中文注释 m文件英文注释、 懒得切输入法、 祝大家观影愉快。 - - - Dylan.