You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

298 lines
7.8 KiB

//
// TYTextContainer.h
// TYAttributedLabelDemo
//
// Created by tanyang on 15/6/4.
// Copyright (c) 2015年 tanyang. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "TYTextStorageProtocol.h"
#import "NSMutableAttributedString+TY.h"
#import "TYTextStorage.h"
#import "TYLinkTextStorage.h"
#import "TYDrawStorage.h"
#import "TYImageStorage.h"
#import "TYViewStorage.h"
@interface TYTextContainer : NSObject
@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) NSAttributedString *attributedText;
@property (nonatomic, assign) NSInteger numberOfLines; //行数
@property (nonatomic, strong) UIColor *textColor; // 文字颜色
@property (nonatomic, strong) UIColor *linkColor; //链接颜色
@property (nonatomic, strong) UIFont *font; // 文字大小
@property (nonatomic, assign) unichar strokeWidth; // 空心字边框宽
@property (nonatomic, strong) UIColor *strokeColor; // 空心字边框颜色
@property (nonatomic, assign) unichar characterSpacing; // 字距
@property (nonatomic, assign) CGFloat linesSpacing; // 行距
@property (nonatomic, assign) CGFloat paragraphSpacing; // 段落间距
@property (nonatomic, assign) CTTextAlignment textAlignment; // 文本对齐方式 kCTTextAlignmentLeft
@property (nonatomic, assign) CTLineBreakMode lineBreakMode; // 换行模式 kCTLineBreakByCharWrapping
@property (nonatomic, assign) BOOL isWidthToFit; // 宽度自适应
// after createTextContainer, have value
@property (nonatomic, assign, readonly) CGFloat textHeight;
@property (nonatomic, assign, readonly) CGFloat textWidth;
// after createTextContainer, have value
@property (nonatomic, strong, readonly) NSArray *textStorages;
/**
* textContainer
*/
- (instancetype)createTextContainerWithTextWidth:(CGFloat)textWidth;
- (instancetype)createTextContainerWithContentSize:(CGSize)contentSize;
/**
*
*/
- (NSAttributedString *)createAttributedString;
/**
* size
*/
- (CGSize)getSuggestedSizeWithFramesetter:(CTFramesetterRef)framesetter width:(CGFloat)width;
/**
*
*/
- (CGFloat)getHeightWithFramesetter:(CTFramesetterRef)framesetter width:(CGFloat)width;
@end
@interface TYTextContainer (Add)
/**
* textStorage
*
* @param textStorage
*/
- (void)addTextStorage:(id<TYTextStorageProtocol>)textStorage;
/**
* textRun数组
*
*/
- (void)addTextStorageArray:(NSArray *)textStorageArray;
@end
#pragma mark - append
@interface TYTextContainer (Append)
/**
* ()
*
* @param text
*/
- (void)appendText:(NSString *)text;
/**
* ()
*
* @param attributedText
*/
- (void)appendTextAttributedString: (NSAttributedString *)attributedText;
/**
* () textStorage
*
* @param textStorage Storage
*/
- (void)appendTextStorage:(id<TYAppendTextStorageProtocol>)textStorage;
/**
* () textStorage
*
* @param textStorageArray run数组TYAppendTextStorageProtocol,
*/
- (void)appendTextStorageArray:(NSArray *)textStorageArray;
@end
#pragma mark - Link
@interface TYTextContainer (Link)
/**
* LinkTextStorage
*/
- (void)addLinkWithLinkData:(id)linkData range:(NSRange )range;
/**
* LinkTextStorage
*/
- (void)addLinkWithLinkData:(id)linkData linkColor:(UIColor *)linkColor range:(NSRange )range;
/**
* LinkTextStorage
*
* @param linkData
* @param linkColor
* @param underLineStyle 线 )
* @param range
*/
- (void)addLinkWithLinkData:(id)linkData linkColor:(UIColor *)linkColor underLineStyle:(CTUnderlineStyle)underLineStyle range:(NSRange )range;
/**
* LinkTextStorage
*/
- (void)appendLinkWithText:(NSString *)linkText linkFont:(UIFont *)linkFont linkData:(id)linkData;
/**
* LinkTextStorage
*/
- (void)appendLinkWithText:(NSString *)linkText linkFont:(UIFont *)linkFont linkColor:(UIColor *)linkColor linkData:(id)linkData;
/**
* LinkTextStorage
*
* @param linkText
* @param linkData
* @param underLineStyle 线 )
*/
- (void)appendLinkWithText:(NSString *)linkText linkFont:(UIFont *)linkFont linkColor:(UIColor *)linkColor underLineStyle:(CTUnderlineStyle)underLineStyle linkData:(id)linkData;
@end
#pragma mark - 扩展支持UIImage
@interface TYTextContainer (UIImage)
#pragma mark - addImageStorage
/**
* imageStorage image数据
*/
- (void)addImage:(UIImage *)image range:(NSRange)range;
/**
* imageStorage image数据
*/
- (void)addImage:(UIImage *)image range:(NSRange)range size:(CGSize)size;
/**
* imageStorage image数据
*
* @param image image
* @param range
* @param size
* @param alignment
*/
- (void)addImage:(UIImage *)image range:(NSRange)range
size:(CGSize)size
alignment: (TYDrawAlignment)alignment;
/**
* imageStorage image数据
*/
- (void)addImageWithName:(NSString *)imageName range:(NSRange)range;
/**
* imageStorage image数据
*/
- (void)addImageWithName:(NSString *)imageName
range:(NSRange)range
size:(CGSize)size;
/**
* imageStorage image数据
*
* @param imageName image名
* @param range
* @param size
* @param alignment
*/
- (void)addImageWithName:(NSString *)imageName
range:(NSRange)range
size:(CGSize)size
alignment:(TYDrawAlignment)alignment;
#pragma mark - appendImageStorage
/**
* imageStorage image数据
*/
- (void)appendImage:(UIImage *)image;
/**
* imageStorage image数据
*/
- (void)appendImage:(UIImage *)image
size:(CGSize)size;
/**
* imageStorage image数据
*
* @param image image
* @param size
* @param alignment
*/
- (void)appendImage:(UIImage *)image
size:(CGSize)size
alignment:(TYDrawAlignment)alignment;
/**
* imageStorage image数据
*/
- (void)appendImageWithName:(NSString *)imageName;
/**
* imageStorage image数据
*/
- (void)appendImageWithName:(NSString *)imageName size:(CGSize)size;
/**
* imageStorage image数据
*
* @param imageName imageName
* @param size
* @param alignment
*/
- (void)appendImageWithName:(NSString *)imageName
size:(CGSize)size
alignment:(TYDrawAlignment)alignment;
@end
#pragma mark - 扩展支持UIView
@interface TYTextContainer (UIView)
/**
* viewStorage ( UI控件 frame)
*/
- (void)addView:(UIView *)view range:(NSRange)range;
/**
* viewStorage ( UI控件 frame)
*
* @param view UIView (UI控件)
* @param range
* @param alignment view对齐方式
*/
- (void)addView:(UIView *)view
range:(NSRange)range
alignment:(TYDrawAlignment)alignment;
/**
* viewStorage ( UI控件 frame)
*/
- (void)appendView:(UIView *)view;
/**
* viewStorage ( UI控件 frame)
*
* @param view UIView (UI控件)
* @param alignment view对齐
*/
- (void)appendView:(UIView *)view alignment:(TYDrawAlignment)alignment;
@end