ParagraphString

来源:互联网 发布:编程人员平均薪资 编辑:程序博客网 时间:2024/05/29 15:46

源码:

#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>#import "BaseParagraphStyle.h"@interface ParagraphString : NSObject/** The input string. */@property (nonatomic, strong) NSString            *string;/** Set the string's font, default is nil. */@property (nonatomic, strong) UIFont              *font;/** Set the string's textColor, default is nil. */@property (nonatomic, strong) UIColor             *textColor;/** Set the paragraph style, default is nil. */@property (nonatomic, strong) BaseParagraphStyle  *paragraphStyle;/** Make the config (Font, textColor, paragraphStyle) effective. */- (void)makeConfigEffective;/** The attributedString, before you get this, you should set property and run makeConfigEffective first. */@property (nonatomic, strong, readonly) NSMutableAttributedString *attributedString;/** The string's height with the fixed width. @param width The specified width. @return The string's height. */- (CGFloat)heightWithFixedWidth:(CGFloat)width;/** The string's height with the fixed width. @param lines The number of lines. @param width The specified width. @return The string's height. */- (CGFloat)numberOfLines:(NSInteger)lines fixedWidth:(CGFloat)width;/** ParagraphString's constructor. @param string The string. @param font The font. @param color The color. @param style The paragraph style. @return The ParagraphString's instance. */+ (instancetype)paragraphStringWithString:(NSString *)string font:(UIFont *)font color:(UIColor *)color                           paragraphStyle:(BaseParagraphStyle *)style;@end
复制代码
复制代码
////  ParagraphString.m//  RichString////  Created by YouXianMing on 2016/11/11.//  Copyright © 2016年 TechCode. All rights reserved.//#import "ParagraphString.h"@interface ParagraphString ()@property (nonatomic, strong) NSMutableAttributedString *attributedString;@end@implementation ParagraphString- (void)makeConfigEffective {        if (self.string) {                NSRange range = NSMakeRange(0, self.string.length);                NSMutableAttributedString *richString = [[NSMutableAttributedString alloc] initWithString:self.string];                self.font           ? [richString addAttribute:NSFontAttributeName            value:self.font range:range]           : 0;        self.textColor      ? [richString addAttribute:NSForegroundColorAttributeName value:self.textColor range:range]      : 0;        self.paragraphStyle ? [richString addAttribute:NSParagraphStyleAttributeName  value:self.paragraphStyle range:range] : 0;                self.attributedString = richString;            } else {                self.attributedString = nil;    }}+ (instancetype)paragraphStringWithString:(NSString *)string font:(UIFont *)font color:(UIColor *)color                           paragraphStyle:(BaseParagraphStyle *)style {        ParagraphString *paragraphString = [[[self class] alloc] init];    paragraphString.string           = string;    paragraphString.font             = font;    paragraphString.textColor        = color;    paragraphString.paragraphStyle   = style;    [paragraphString makeConfigEffective];        return paragraphString;}- (CGFloat)heightWithFixedWidth:(CGFloat)width {        CGFloat height = 0;        if (self.attributedString) {                CGRect rect = [self.attributedString boundingRectWithSize:CGSizeMake(width, MAXFLOAT)                                                          options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading                                                          context:nil];                height = rect.size.height;    }        return height;}- (CGFloat)numberOfLines:(NSInteger)lines fixedWidth:(CGFloat)width {        NSRange                    range      = NSMakeRange(0, self.string.length);    NSMutableAttributedString *richString = [[NSMutableAttributedString alloc] initWithString:self.string];        self.font           ? [richString addAttribute:NSFontAttributeName            value:self.font range:range]           : 0;    self.textColor      ? [richString addAttribute:NSForegroundColorAttributeName value:self.textColor range:range]      : 0;    self.paragraphStyle ? [richString addAttribute:NSParagraphStyleAttributeName  value:self.paragraphStyle range:range] : 0;        UILabel *label       = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];    label.numberOfLines  = lines;    label.attributedText = richString;    [label sizeToFit];        return label.frame.size.height;}@end
#import <UIKit/UIKit.h>@interface BaseParagraphStyle : NSMutableParagraphStyle@end
复制代码
复制代码
#import "BaseParagraphStyle.h"@implementation BaseParagraphStyle@end


0 0
原创粉丝点击