From e707b51c6fba239d3175dbf53d0e94c9b1607ced Mon Sep 17 00:00:00 2001 From: yuchuanfeng <286428125@qq.com> Date: Wed, 15 Feb 2017 17:10:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tableView=E7=9A=84demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.DS_Store" | Bin 6148 -> 6148 bytes .../project.pbxproj" | 6 + ...01\350\241\250\346\203\205.xcscmblueprint" | 30 ++++ .../UserInterfaceState.xcuserstate" | Bin 39694 -> 54685 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist" | 36 +++++ .../Base.lproj/Main.storyboard" | 140 +++++++++++++----- .../CFTableViewCell.h" | 14 ++ .../CFTableViewCell.m" | 29 ++++ .../CFTextAttachment.h" | 2 + .../CFTextModel.h" | 2 + .../CFTextModel.m" | 20 ++- .../CFTextView.m" | 18 ++- .../ViewController.h" | 2 +- .../ViewController.m" | 49 +++++- 14 files changed, 299 insertions(+), 49 deletions(-) create mode 100644 "11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcshareddata/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcscmblueprint" create mode 100644 "11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.h" create mode 100644 "11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.m" diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/.DS_Store" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/.DS_Store" index 6117f376386fde48accf0c4165a2cc3639561ba8..916bd4575db3249fe82ac26862dae70f2a49286b 100644 GIT binary patch delta 308 zcmZoMXfc=|#>B)qu~2NHo+2ab!~pA!2O1cGj2_i`VFp7WRAA6$PzYL)z}S(IaFjuh zp@JcqA)g_IA(f$kp$N#z%1Jj2PR`FQU;qKe9(y23q|V%Y7nhXMl4J&kD<>yy2J1)C znTpTS-24CJzu~2NHo+2aT!~knX#>qTPs+(1qAG2&WU@m6b%+A5j0aUVCk@-9G aWPTA{PDTa>h66y%FxiGjdUK4(5@rCK^bs%s diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.pbxproj" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.pbxproj" index 93fb64b..112f047 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.pbxproj" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.pbxproj" @@ -14,6 +14,7 @@ 860F857B1C36501F00D353C2 /* gifEmotion_4.gif in Resources */ = {isa = PBXBuildFile; fileRef = 860F85741C36501F00D353C2 /* gifEmotion_4.gif */; }; 860F857C1C36501F00D353C2 /* gifEmotion_5.gif in Resources */ = {isa = PBXBuildFile; fileRef = 860F85751C36501F00D353C2 /* gifEmotion_5.gif */; }; 860F857D1C36501F00D353C2 /* gifEmotion_6.gif in Resources */ = {isa = PBXBuildFile; fileRef = 860F85761C36501F00D353C2 /* gifEmotion_6.gif */; }; + 8627DCDE1E5419AF00481CCA /* CFTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8627DCDD1E5419AF00481CCA /* CFTableViewCell.m */; }; 864A419C1C3221A200839E11 /* CFTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 864A419B1C3221A200839E11 /* CFTextView.m */; }; 864A419F1C32220E00839E11 /* CFTextModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 864A419E1C32220E00839E11 /* CFTextModel.m */; }; 864A41A11C32227300839E11 /* EmotionGifList.plist in Resources */ = {isa = PBXBuildFile; fileRef = 864A41A01C32227300839E11 /* EmotionGifList.plist */; }; @@ -67,6 +68,8 @@ 860F85741C36501F00D353C2 /* gifEmotion_4.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = gifEmotion_4.gif; sourceTree = ""; }; 860F85751C36501F00D353C2 /* gifEmotion_5.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = gifEmotion_5.gif; sourceTree = ""; }; 860F85761C36501F00D353C2 /* gifEmotion_6.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = gifEmotion_6.gif; sourceTree = ""; }; + 8627DCDC1E5419AF00481CCA /* CFTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFTableViewCell.h; sourceTree = ""; }; + 8627DCDD1E5419AF00481CCA /* CFTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CFTableViewCell.m; sourceTree = ""; }; 864A419A1C3221A200839E11 /* CFTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFTextView.h; sourceTree = ""; }; 864A419B1C3221A200839E11 /* CFTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CFTextView.m; sourceTree = ""; }; 864A419D1C32220E00839E11 /* CFTextModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CFTextModel.h; sourceTree = ""; }; @@ -194,6 +197,8 @@ 864A419E1C32220E00839E11 /* CFTextModel.m */, 864A419A1C3221A200839E11 /* CFTextView.h */, 864A419B1C3221A200839E11 /* CFTextView.m */, + 8627DCDC1E5419AF00481CCA /* CFTableViewCell.h */, + 8627DCDD1E5419AF00481CCA /* CFTableViewCell.m */, 86DC36531C30DCEB0045F2C6 /* Main.storyboard */, 86DC36561C30DCEB0045F2C6 /* Assets.xcassets */, 86DC36581C30DCEB0045F2C6 /* LaunchScreen.storyboard */, @@ -420,6 +425,7 @@ 86DC369B1C30DD0D0045F2C6 /* NSData+ImageContentType.m in Sources */, 864A419C1C3221A200839E11 /* CFTextView.m in Sources */, 86DC36A01C30DD0D0045F2C6 /* SDWebImageDownloaderOperation.m in Sources */, + 8627DCDE1E5419AF00481CCA /* CFTableViewCell.m in Sources */, 864A41BF1C32613300839E11 /* CFTextAttachment.m in Sources */, 86DC36A71C30DD0D0045F2C6 /* UIImageView+WebCache.m in Sources */, 86DC36A11C30DD0D0045F2C6 /* SDWebImageManager.m in Sources */, diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcshareddata/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcscmblueprint" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcshareddata/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcscmblueprint" new file mode 100644 index 0000000..857593b --- /dev/null +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcshareddata/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcscmblueprint" @@ -0,0 +1,30 @@ +{ + "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "B2CBDD9BE3727E57984017C50D692600B2AD0D06", + "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { + + }, + "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { + "B2CBDD9BE3727E57984017C50D692600B2AD0D06" : 9223372036854775807, + "DDE97A45152D06BAB7D0DE50BBF46B97CB854B85" : 9223372036854775807 + }, + "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "FD3116A7-A2A4-47BA-9EC3-939DA44548A3", + "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { + "B2CBDD9BE3727E57984017C50D692600B2AD0D06" : "CFGifEmotionDemo\/", + "DDE97A45152D06BAB7D0DE50BBF46B97CB854B85" : "" + }, + "DVTSourceControlWorkspaceBlueprintNameKey" : "11 - 动态表情", + "DVTSourceControlWorkspaceBlueprintVersion" : 204, + "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "11 - 动态表情\/11 - 动态表情.xcodeproj", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/yuchuanfeng\/CFGifEmotionDemo.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "B2CBDD9BE3727E57984017C50D692600B2AD0D06" + }, + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/yuchuanfeng\/CFHoveringTableViewDemo.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "DDE97A45152D06BAB7D0DE50BBF46B97CB854B85" + } + ] +} \ No newline at end of file diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcuserdata/yuchuanfeng.xcuserdatad/UserInterfaceState.xcuserstate" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205.xcodeproj/project.xcworkspace/xcuserdata/yuchuanfeng.xcuserdatad/UserInterfaceState.xcuserstate" index 16e1e9087246c8ab8d28b43fb420f2de164af142..fdceaa08bd28aa94f60d085638d2a84c1a71c135 100644 GIT binary patch literal 54685 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 SE&nUWJL8)7<81WCCw^Q2Hipoovf%*U~ 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 uvc + + + + + + + + + + + + + + + + diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/Base.lproj/Main.storyboard" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/Base.lproj/Main.storyboard" index 8d5b337..49fa0f9 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/Base.lproj/Main.storyboard" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/Base.lproj/Main.storyboard" @@ -1,49 +1,115 @@ - - + + + + + - - + + - + - - - - - - + + - - - - - - - - - Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident + + + + + + + + + + + + + sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.h" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.h" new file mode 100644 index 0000000..dea8b3a --- /dev/null +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.h" @@ -0,0 +1,14 @@ +// +// CFTableViewCell.h +// 11 - 动态表情 +// +// Created by 于传峰 on 2017/2/15. +// Copyright © 2017年 于传峰. All rights reserved. +// + +#import + +@interface CFTableViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.m" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.m" new file mode 100644 index 0000000..6ae0baa --- /dev/null +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTableViewCell.m" @@ -0,0 +1,29 @@ +// +// CFTableViewCell.m +// 11 - 动态表情 +// +// Created by 于传峰 on 2017/2/15. +// Copyright © 2017年 于传峰. All rights reserved. +// + +#import "CFTableViewCell.h" + +@interface CFTableViewCell() + + +@end + +@implementation CFTableViewCell + +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextAttachment.h" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextAttachment.h" index 11f769c..4267659 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextAttachment.h" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextAttachment.h" @@ -8,6 +8,8 @@ #import +#define gifRect CGRectMake(0, 0, 60, 50) + @interface CFTextAttachment : NSTextAttachment @property (nonatomic, copy) NSString *gifName; @end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.h" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.h" index 632bb20..550dc4f 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.h" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.h" @@ -7,9 +7,11 @@ // #import +#import @interface CFTextModel : NSObject @property (nonatomic, strong) NSMutableAttributedString *attributedString; @property (nonatomic, copy) NSString *contentString; +@property (nonatomic, assign) CGFloat height; @end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.m" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.m" index 93ea11b..daa6cef 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.m" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextModel.m" @@ -10,6 +10,8 @@ #import #import "CFTextAttachment.h" + + @implementation CFTextModel - (void)setContentString:(NSString *)contentString @@ -31,7 +33,7 @@ - (void)setContentString:(NSString *)contentString if (gifName) { gifEomtionDict[NSStringFromRange(NSMakeRange(result.range.location, resultString.length))] = gifName; - NSLog(@"%@----%@====%@", resultString, gifName, gifEomtionDict); +// NSLog(@"%@----%@====%@", resultString, gifName, gifEomtionDict); } }]; @@ -50,7 +52,7 @@ - (void)setContentString:(NSString *)contentString for (NSString* rangeString in ranges) { CFTextAttachment* attachment = [[CFTextAttachment alloc] init]; - attachment.bounds = CGRectMake(0, 0, 60, 50); + attachment.bounds = gifRect; attachment.gifName = gifEomtionDict[rangeString]; NSAttributedString* attachmentString = [NSAttributedString attributedStringWithAttachment:attachment]; [attributedString replaceCharactersInRange:NSRangeFromString(rangeString) withAttributedString:attachmentString]; @@ -58,7 +60,21 @@ - (void)setContentString:(NSString *)contentString [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, attributedString.length)]; [attributedString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:17] range:NSMakeRange(0, attributedString.length)]; + + NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setParagraphStyle:[NSParagraphStyle defaultParagraphStyle]]; + paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; + paragraphStyle.lineSpacing = 10; + [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attributedString.length)]; + self.attributedString = attributedString; } +- (void)setAttributedString:(NSMutableAttributedString *)attributedString +{ + _attributedString = attributedString; + self.height = [attributedString boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width-40 , CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesDeviceMetrics|NSStringDrawingTruncatesLastVisibleLine context:NULL].size.height+20; + NSLog(@"heigt = %f", self.height); +} + @end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextView.m" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextView.m" index ac49a3d..3782c3b 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextView.m" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/CFTextView.m" @@ -12,6 +12,15 @@ @implementation CFTextView +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) + { + + } + return self; +} + - (void)setAttributedText:(NSAttributedString *)attributedText { [super setAttributedText:attributedText]; @@ -22,19 +31,22 @@ - (void)setAttributedText:(NSAttributedString *)attributedText } [self.attributedText enumerateAttribute:NSAttachmentAttributeName inRange:NSMakeRange(0, self.attributedText.length) options:NSAttributedStringEnumerationReverse usingBlock:^(CFTextAttachment* value, NSRange range, BOOL * _Nonnull stop) { - if (value && CGRectEqualToRect(value.bounds, CGRectMake(0, 0, 60, 50))) { + if (value && CGRectEqualToRect(value.bounds, gifRect)) { self.selectedRange = range; CGRect rect = [self firstRectForRange:self.selectedTextRange]; - self.selectedRange = NSMakeRange(0, 0); + rect.origin.y += (rect.size.height - gifRect.size.height); + rect.size = gifRect.size; UIImageView* imageView = [[UIImageView alloc] init]; [self addSubview:imageView]; imageView.frame = rect; imageView.image = [UIImage sd_animatedGIFNamed:value.gifName]; +// NSLog(@"\n rect = %@ \ncount = %@", NSStringFromCGRect(rect), [self selectionRectsForRange:self.selectedTextRange]); + // imageView.backgroundColor = [UIColor greenColor]; } }]; - + self.selectedRange = NSMakeRange(0, 0); } @end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.h" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.h" index b84fab6..351a578 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.h" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.h" @@ -8,7 +8,7 @@ #import -@interface ViewController : UIViewController +@interface ViewController : UITableViewController @end diff --git "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.m" "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.m" index c68fb7d..e8c8327 100644 --- "a/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.m" +++ "b/11 - \345\212\250\346\200\201\350\241\250\346\203\205/11 - \345\212\250\346\200\201\350\241\250\346\203\205/ViewController.m" @@ -10,21 +10,58 @@ #import "UIImage+GIF.h" #import "CFTextModel.h" #import "CFTextView.h" +#import "CFTableViewCell.h" @interface ViewController () -@property (weak, nonatomic) IBOutlet CFTextView *textView; - +@property (nonatomic, strong) NSMutableArray *models; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. - CFTextModel* model = [[CFTextModel alloc] init]; - model.contentString = @"/咸蛋超人“没人在乎你怎样在深夜痛哭,/飞翔/飞翔/飞翔也没人在乎你辗转反侧的要熬几个秋。外人只看结果,/奥特曼自己独撑过程。/点头等你明白了这个道理,便不会再在人前矫情,/我撞四处诉说以求宽慰。/烧烤”当你知道了许多真实、虚假的东西,/咸蛋超人也就没有那么多酸情了。你越来越沉默,越来越不想说。/心烦"; - self.textView.attributedText = model.attributedString; + +// self.tableView.rowHeight = UITableViewAutomaticDimension; + + self.models = [[NSMutableArray alloc] init]; + for ( int i = 0; i<100; i++ ) + { + CFTextModel* model = [[CFTextModel alloc] init]; + if (i % 2) + { + model.contentString = @"/咸蛋超人“没人在乎你怎样在深夜痛哭,/飞翔/飞翔/飞翔也没人在乎你辗转反侧的要熬几个/我撞秋。/我撞"; + }else{ + model.contentString = @"/点头等你明白了这个道理,便不会再在人前矫情,/我撞四处诉说以求宽慰。/烧烤”当你知道了许多真实、虚假的东西,/我撞也就没有那么多酸情了。你越来越沉默,越来越不想说。/心烦"; + [model.attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, model.attributedString.length)]; + } + [self.models addObject:model]; + } +// self.textView.attributedText = model.attributedString; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return 100; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + CFTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; + CFTextModel* model = self.models[indexPath.row]; + cell.textView.attributedText = model.attributedString; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + CFTextModel* model = self.models[indexPath.row]; + return model.height; } +//- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath +//{ +// return 40; +//} + @end