ParagraphString,paragraph

來源:互聯網
上載者:User

ParagraphString,paragraph

ParagraphString - 段落樣式的簡易處理

 

效果

 

源碼

https://github.com/YouXianMing/UI-Component-Collection 中的 ParagraphString

////  ParagraphString.h//  RichString////  Created by YouXianMing on 2016/11/11.//  Copyright  2016年 TechCode. All rights reserved.//#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
////  BaseParagraphStyle.h//  RichString////  Created by YouXianMing on 2016/11/11.//  Copyright  2016年 TechCode. All rights reserved.//#import <UIKit/UIKit.h>@interface BaseParagraphStyle : NSMutableParagraphStyle@end
////  BaseParagraphStyle.m//  RichString////  Created by YouXianMing on 2016/11/11.//  Copyright  2016年 TechCode. All rights reserved.//#import "BaseParagraphStyle.h"@implementation BaseParagraphStyle@end

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.