diff --git a/STTweetLabel.podspec b/STTweetLabel.podspec index d6dd99c..1989512 100644 --- a/STTweetLabel.podspec +++ b/STTweetLabel.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "STTweetLabel" - s.version = "2.1.0" + s.version = "2.2.0" s.summary = "A custom UILabel view controller for iOS with certain words tappable like Twitter." s.homepage = "https://github.com/SebastienThiebaud/STTweetLabel" @@ -8,10 +8,10 @@ Pod::Spec.new do |s| s.author = { "Sebastien THIEBAUD" => "sthiebaud@icloud.com" } s.source = { :git => "https://github.com/SebastienThiebaud/STTweetLabel.git", - :tag => "2.1.0" + :tag => "2.2.0" } s.platform = :ios s.source_files = 'STTweetLabel/STTweetLabel.{h,m}' s.requires_arc = true -end +end \ No newline at end of file diff --git a/STTweetLabel/STTweetLabel.h b/STTweetLabel/STTweetLabel.h index 5c87205..2a0b4a2 100644 --- a/STTweetLabel/STTweetLabel.h +++ b/STTweetLabel/STTweetLabel.h @@ -8,47 +8,188 @@ #import -#define DEPRECATED __attribute__ ((deprecated)) - typedef enum { - STLinkActionTypeAccount, STLinkActionTypeHashtag, STLinkActionTypeWebsite - } STLinkActionType; typedef void(^STLinkCallbackBlock)(STLinkActionType actionType, NSString *link); -/* - * Deprecated Delegate Callbacks. - * Please use NSBlocks instead. + + +/** + The STLinkProtocol protocol is adopted by an object that receives the user interactions for a STTweetLabel. */ @protocol STLinkProtocol @optional -- (void)twitterAccountClicked:(NSString *)link DEPRECATED; -- (void)twitterHashtagClicked:(NSString *)link DEPRECATED; -- (void)websiteClicked:(NSString *)link DEPRECATED; + +/** + Tells the delegate that the specified @Mention is now selected. + @param link The mention + */ +- (void)twitterAccountClicked:(NSString *)link __attribute__ ((deprecated)); + +/** + Tells the delegate that the specified #Hashtag is now selected. + @param link The hashtag + */ +- (void)twitterHashtagClicked:(NSString *)link __attribute__ ((deprecated)); + +/** + Tells the delegate that the specified link is now selected. + @param link The web link + */ +- (void)websiteClicked:(NSString *)link __attribute__ ((deprecated)); @end + +typedef enum { + STVerticalAlignmentTop, + STVerticalAlignmentMiddle, + STVerticalAlignmentBottom +} STVerticalAlignment; + +typedef enum { + STHorizontalAlignmentLeft, + STHorizontalAlignmentCenter, + STHorizontalAlignmentRight +} STHorizontalAlignment; + + + +/** + A custom UILabel view controller for iOS with certain words tappable like Twitter (#Hashtag, @People and http://www.link.com/page) + */ @interface STTweetLabel : UILabel { + NSMutableArray *sizeLines; + NSMutableArray *touchLocations; NSMutableArray *touchWords; } + + +/** @name Customizing the Text */ + +/** + The font of the different links. + + The default value for this property is the font of the text. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, strong) UIFont *fontLink; + +/** + The font of the different hashtags and mentions. + + The default value for this property is the font of the text. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, strong) UIFont *fontHashtag; + +/** + The color of the different links. + + The default value for this property is `RGB(170,170,170)`. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, strong) UIColor *colorLink; + +/** + The color of the different hashtags and mentions. + + The default value for this property is `RGB(129,171,193)`. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, strong) UIColor *colorHashtag; + +/** + The color of the shadow text. + + The default value for this property is `[UIColor blackColor]`. + + @warning You must specify a value for this parameter before `setText:` + */ +@property (nonatomic, strong) UIColor *shadowColor; + +/** + The size of the shadow text. + + The default value for this property is `CGSizeZero`. + + @warning You must specify a value for this parameter before `setText:` + */ +@property (nonatomic, assign) CGSize shadowOffset; + + + +/** @name Configuring the Spaces and Alignments */ + +/** + The space between each word. + + The default value for this property is `0`. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, assign) float wordSpace; + +/** + The space between each line. + + The default value for this property is `0`. + + @warning You must specify a value for this parameter before `setText:` + */ @property (nonatomic, assign) float lineSpace; -@property (nonatomic, strong) id delegate DEPRECATED; +/** + The horizontal alignment of the text. + + The default value for this property is `STHorizontalAlignmentLeft`. + + @warning You must specify a value for this parameter before `setText:` + */ +@property (nonatomic, assign) STHorizontalAlignment horizontalAlignment; +/** + The vertical alignment of the text. + + The default value for this property is `STVerticalAlignmentTop`. + + @warning You must specify a value for this parameter before `setText:` + */ +@property (nonatomic, assign) STVerticalAlignment verticalAlignment; + + + +/** @name Managing the Delegate and Callback Block */ + +/** + The object that acts as the delegate of the receiving tweet label view. (Deprecated in 2.0. Use callbackBlock instead.) + + The delegate must adopt the STLinkProtocol protocol. + */ +@property (nonatomic, strong) id delegate __attribute__ ((deprecated)); + +/** + The block called when an user interaction is caught + + You can declare a STLinkCallbackBlock with `void(^STLinkCallbackBlock)(STLinkActionType actionType, NSString *link);`: + + STLinkCallbackBlock callbackBlock = ^(STLinkActionType actionType, NSString *link) { + // Do something... + }; + */ @property (nonatomic, copy) STLinkCallbackBlock callbackBlock; @end diff --git a/STTweetLabel/STTweetLabel.m b/STTweetLabel/STTweetLabel.m index 5078656..df4f1d3 100644 --- a/STTweetLabel/STTweetLabel.m +++ b/STTweetLabel/STTweetLabel.m @@ -20,14 +20,19 @@ [self setNumberOfLines:0]; [self setLineBreakMode:NSLineBreakByWordWrapping]; - // Init by default spaces + // Init by default spaces and alignments _wordSpace = 0.0; _lineSpace = 0.0; + _verticalAlignment = STVerticalAlignmentTop; + _horizontalAlignment = STHorizontalAlignmentLeft; // Alloc and init the arrays which stock the touchable words and their location touchLocations = [[NSMutableArray alloc] init]; touchWords = [[NSMutableArray alloc] init]; + // Alloc and init the array for lines' size + sizeLines = [[NSMutableArray alloc] init]; + // Init touchable words colors _colorHashtag = [UIColor colorWithWhite:170.0/255.0 alpha:1.0]; _colorLink = [UIColor colorWithRed:129.0/255.0 green:171.0/255.0 blue:193.0/255.0 alpha:1.0]; @@ -51,10 +56,13 @@ [touchWords removeAllObjects]; // Separate words by spaces and lines - NSArray *words = [[self htmlToText:self.text] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + NSArray *words = [[self htmlToText:self.text] componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; // Init a point which is the reference to draw words CGPoint drawPoint = CGPointMake(0.0, 0.0); + + CGSize sizeWord = CGSizeZero; + // Calculate the size of a space with the actual font CGSize sizeSpace = [@" " sizeWithFont:self.font constrainedToSize:rect.size lineBreakMode:self.lineBreakMode]; @@ -65,153 +73,303 @@ NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"((@|#)([A-Z0-9a-z(é|ë|ê|è|à|â|ä|á|ù|ü|û|ú|ì|ï|î|í)_]+))|(http(s)?://([A-Z0-9a-z._-]*(/)?)*)" options:NSRegularExpressionCaseInsensitive error:&error]; // Regex to catch newline - NSRegularExpression *regexNewLine = [NSRegularExpression regularExpressionWithPattern:@">newLine" options:NSRegularExpressionCaseInsensitive error:&error]; - + NSRegularExpression *regexNewLine = [NSRegularExpression regularExpressionWithPattern:@"\\n" options:NSRegularExpressionCaseInsensitive error:&error]; + BOOL loopWord = NO; - - for (NSString *wordArray in words) - { - NSString *word = @""; - NSMutableString *alreadyPrintedWord = [[NSMutableString alloc] init]; - - do + int indexOrigin = 0; + + // 2 loops : one calculation (for alignments...) ; one for printing + for (int repeat = 0; repeat < 2; repeat++) + { + for (NSString *wordArray in words) { - word = [wordArray substringFromIndex:[alreadyPrintedWord length]]; + NSString *word = @""; + NSMutableString *alreadyPrintedWord = [[NSMutableString alloc] init]; - CGSize sizeWord = [word sizeWithFont:self.font]; - - if (sizeWord.width <= rect.size.width) + do { - loopWord = NO; - } - - // If the word is larger than the container's size - while (sizeWord.width > rect.size.width) - { - NSString *cutWord = [self cutTheString:word atPoint:drawPoint]; + word = [wordArray substringFromIndex:[alreadyPrintedWord length]]; - [alreadyPrintedWord appendString:cutWord]; - - word = cutWord; sizeWord = [word sizeWithFont:self.font]; - loopWord = YES; - } - - // Test if the new word must be in a new line - if (drawPoint.x + sizeWord.width > rect.size.width) - { - drawPoint = CGPointMake(0.0, drawPoint.y + sizeWord.height + _lineSpace); - } - - NSTextCheckingResult *match = [regex firstMatchInString:word options:0 range:NSMakeRange(0, [word length])]; - - // Dissolve the word (for example a hashtag: #youtube!, we want only #youtube) - NSString *preCharacters = [word substringToIndex:match.range.location]; - NSString *wordCharacters = [word substringWithRange:match.range]; - NSString *postCharacters = [word substringFromIndex:match.range.location + match.range.length]; - - // Draw the prefix of the word (if it has a prefix) - if (![preCharacters isEqualToString:@""]) - { - // Shadow case - if (self.shadowColor != NULL) + if (sizeWord.width <= rect.size.width) { - [self.shadowColor set]; - [preCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + loopWord = NO; } - [self.textColor set]; - CGSize sizePreCharacters = [preCharacters sizeWithFont:self.font]; - [preCharacters drawAtPoint:drawPoint withFont:self.font]; - - drawPoint = CGPointMake(drawPoint.x + sizePreCharacters.width + _wordSpace, drawPoint.y); - } - - // Draw the touchable word - if (![wordCharacters isEqualToString:@""]) - { - // Shadow case - if (self.shadowColor != NULL) + // If the word is larger than the container's size + while (sizeWord.width > rect.size.width) { - [self.shadowColor set]; - [wordCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + NSString *cutWord = [self cutTheString:word atPoint:drawPoint]; + + [alreadyPrintedWord appendString:cutWord]; + + word = cutWord; + sizeWord = [word sizeWithFont:self.font]; + + loopWord = YES; } - // Set the color for mention/hashtag OR weblink - if ([wordCharacters hasPrefix:@"#"] || [wordCharacters hasPrefix:@"@"]) + NSTextCheckingResult *matchNewLine = [regexNewLine firstMatchInString:word options:0 range:NSMakeRange(0, [word length])]; + + // Test if the new word must be in a new line + if (drawPoint.x + sizeWord.width > rect.size.width && !matchNewLine) { - [_colorHashtag set]; - } - else if ([wordCharacters hasPrefix:@"http"]) - { - [_colorLink set]; + float originX = 0.0; + + if (!repeat) + { + float newHAlignment = 0.0; + + switch (_horizontalAlignment) { + case STHorizontalAlignmentLeft: + newHAlignment = 0.0; + break; + case STHorizontalAlignmentCenter: + newHAlignment = (rect.size.width - drawPoint.x) / 2; + break; + case STHorizontalAlignmentRight: + newHAlignment = rect.size.width - drawPoint.x + sizeSpace.width; + break; + default: + break; + } + + [sizeLines addObject:[NSNumber numberWithFloat:newHAlignment]]; + } + else + { + originX = [[sizeLines objectAtIndex:indexOrigin] floatValue]; + indexOrigin++; + } + + drawPoint = CGPointMake(originX, drawPoint.y + sizeWord.height + _lineSpace); } - CGSize sizeWordCharacters = [wordCharacters sizeWithFont:self.font]; - [wordCharacters drawAtPoint:drawPoint withFont:self.font]; + NSString *preCharacters = @""; + NSString *wordCharacters = @""; + NSString *postCharacters = word; + + if (repeat) + { + NSTextCheckingResult *match = [regex firstMatchInString:word options:0 range:NSMakeRange(0, [word length])]; + + // Dissolve the word (for example a hashtag: #youtube!, we want only #youtube) + preCharacters = [word substringToIndex:match.range.location]; + wordCharacters = [word substringWithRange:match.range]; + postCharacters = [word substringFromIndex:match.range.location + match.range.length]; + } - // Stock the touchable zone - [touchWords addObject:wordCharacters]; - [touchLocations addObject:[NSValue valueWithCGRect:CGRectMake(drawPoint.x, drawPoint.y, sizeWordCharacters.width, sizeWordCharacters.height)]]; - - drawPoint = CGPointMake(drawPoint.x + sizeWordCharacters.width + _wordSpace, drawPoint.y); - } - - // Draw the suffix of the word (if it has a suffix) else the word is not touchable - if (![postCharacters isEqualToString:@""]) - { - NSTextCheckingResult *matchNewLine = [regexNewLine firstMatchInString:postCharacters options:0 range:NSMakeRange(0, [postCharacters length])]; - - // If a newline is match - if (matchNewLine) + // Draw the prefix of the word (if it has a prefix) + if (![preCharacters isEqualToString:@""]) { // Shadow case if (self.shadowColor != NULL) { [self.shadowColor set]; - [[postCharacters substringToIndex:matchNewLine.range.location] drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + + if (repeat) + { + [preCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + } } [self.textColor set]; + CGSize sizePreCharacters = [preCharacters sizeWithFont:self.font]; - [[postCharacters substringToIndex:matchNewLine.range.location] drawAtPoint:drawPoint withFont:self.font]; - drawPoint = CGPointMake(0.0, drawPoint.y + sizeWord.height + _lineSpace); - - // Shadow case - if (self.shadowColor != NULL) + if (repeat) { - [self.shadowColor set]; - [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + [preCharacters drawAtPoint:drawPoint withFont:self.font]; } - [self.textColor set]; - - [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] drawAtPoint:drawPoint withFont:self.font]; - drawPoint = CGPointMake(drawPoint.x + [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] sizeWithFont:self.font].width, drawPoint.y); + drawPoint = CGPointMake(drawPoint.x + sizePreCharacters.width + _wordSpace, drawPoint.y); } - else + + // Draw the touchable word + if (![wordCharacters isEqualToString:@""]) { // Shadow case if (self.shadowColor != NULL) { [self.shadowColor set]; - [postCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + + if (repeat) + { + [wordCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + } } - [self.textColor set]; - CGSize sizePostCharacters = [postCharacters sizeWithFont:self.font]; - [postCharacters drawAtPoint:drawPoint withFont:self.font]; + // Set the color for mention/hashtag OR weblink + if ([wordCharacters hasPrefix:@"#"] || [wordCharacters hasPrefix:@"@"]) + { + [_colorHashtag set]; + } + else if ([wordCharacters hasPrefix:@"http"]) + { + [_colorLink set]; + } - drawPoint = CGPointMake(drawPoint.x + sizePostCharacters.width + _wordSpace, drawPoint.y); + CGSize sizeWordCharacters = [wordCharacters sizeWithFont:self.font]; + + if (repeat) + { + [wordCharacters drawAtPoint:drawPoint withFont:self.font]; + } + + // Stock the touchable zone + [touchWords addObject:wordCharacters]; + [touchLocations addObject:[NSValue valueWithCGRect:CGRectMake(drawPoint.x, drawPoint.y, sizeWordCharacters.width, sizeWordCharacters.height)]]; + + drawPoint = CGPointMake(drawPoint.x + sizeWordCharacters.width + _wordSpace, drawPoint.y); } + + // Draw the suffix of the word (if it has a suffix) else the word is not touchable + if (![postCharacters isEqualToString:@""]) + { + // If a newline is match + if (matchNewLine) + { + // Shadow case + if (self.shadowColor != NULL) + { + [self.shadowColor set]; + + if (repeat) + { + [[postCharacters substringToIndex:matchNewLine.range.location] drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + } + } + + [self.textColor set]; + + if (repeat) + { + [[postCharacters substringToIndex:matchNewLine.range.location] drawAtPoint:drawPoint withFont:self.font]; + } + + float originX = 0.0; + + if (!repeat) + { + float newHAlignment = 0.0; + + switch (_horizontalAlignment) { + case STHorizontalAlignmentLeft: + newHAlignment = 0.0; + break; + case STHorizontalAlignmentCenter: + newHAlignment = (rect.size.width - drawPoint.x - [[postCharacters substringToIndex:matchNewLine.range.location] sizeWithFont:self.font].width) / 2; + break; + case STHorizontalAlignmentRight: + newHAlignment = rect.size.width - drawPoint.x - [[postCharacters substringToIndex:matchNewLine.range.location] sizeWithFont:self.font].width; + break; + default: + break; + } + + [sizeLines addObject:[NSNumber numberWithFloat:newHAlignment]]; + } + else + { + originX = [[sizeLines objectAtIndex:indexOrigin] floatValue]; + indexOrigin++; + } + + drawPoint = CGPointMake(originX, drawPoint.y + sizeWord.height + _lineSpace); + + // Shadow case + if (self.shadowColor != NULL) + { + [self.shadowColor set]; + + if (repeat) + { + [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + } + } + + [self.textColor set]; + + if (repeat) + { + [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] drawAtPoint:drawPoint withFont:self.font]; + } + + drawPoint = CGPointMake(drawPoint.x + [[postCharacters substringFromIndex:matchNewLine.range.location + matchNewLine.range.length] sizeWithFont:self.font].width, drawPoint.y); + } + else + { + // Shadow case + if (self.shadowColor != NULL) + { + [self.shadowColor set]; + + if (repeat) + { + [postCharacters drawAtPoint:CGPointMake(drawPoint.x + self.shadowOffset.width, drawPoint.y + self.shadowOffset.height) withFont:self.font]; + } + } + + [self.textColor set]; + CGSize sizePostCharacters = [postCharacters sizeWithFont:self.font]; + + if (repeat) + { + [postCharacters drawAtPoint:drawPoint withFont:self.font]; + } + + drawPoint = CGPointMake(drawPoint.x + sizePostCharacters.width + _wordSpace, drawPoint.y); + } + } + + if (!loopWord) + { + drawPoint = CGPointMake(drawPoint.x + sizeSpace.width + _wordSpace, drawPoint.y); + } + } while (loopWord); + } + + if (!repeat) + { + // Horizontal alignment + float newHAlignment = 0.0; + + switch (_horizontalAlignment) { + case STHorizontalAlignmentLeft: + newHAlignment = 0.0; + break; + case STHorizontalAlignmentCenter: + newHAlignment = (rect.size.width - drawPoint.x) / 2; + break; + case STHorizontalAlignmentRight: + newHAlignment = rect.size.width - drawPoint.x + sizeSpace.width; + break; + default: + break; } - if (!loopWord) - { - drawPoint = CGPointMake(drawPoint.x + sizeSpace.width + _wordSpace, drawPoint.y); + [sizeLines addObject:[NSNumber numberWithFloat:newHAlignment]]; + + // Vertical alignment + float newY = 0.0; + + switch (_verticalAlignment) { + case STVerticalAlignmentTop: + newY = 0.0; + break; + case STVerticalAlignmentMiddle: + newY = (rect.size.height - drawPoint.y - sizeSpace.height) / 2.0; + break; + case STVerticalAlignmentBottom: + newY = rect.size.height - drawPoint.y - sizeSpace.height; + break; + default: + break; } - } while (loopWord); + + drawPoint = CGPointMake([[sizeLines objectAtIndex:0] floatValue], newY); + indexOrigin = 1; + } } } @@ -293,11 +451,9 @@ htmlString = [htmlString stringByReplacingOccurrencesOfString:@""" withString:@""""]; htmlString = [htmlString stringByReplacingOccurrencesOfString:@"'" withString:@"'"]; - // Newline character (if you have a better idea...) - htmlString = [htmlString stringByReplacingOccurrencesOfString:@"\n" withString:@">newLine"]; - // Extras htmlString = [htmlString stringByReplacingOccurrencesOfString:@"<3" withString:@"♥"]; +// htmlString = [htmlString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; return htmlString; } diff --git a/STTweetLabelExample/STTweetLabelExample.xcodeproj/project.xcworkspace/xcuserdata/sebastienthiebaud.xcuserdatad/UserInterfaceState.xcuserstate b/STTweetLabelExample/STTweetLabelExample.xcodeproj/project.xcworkspace/xcuserdata/sebastienthiebaud.xcuserdatad/UserInterfaceState.xcuserstate index a28ab17..8ecdc04 100644 Binary files a/STTweetLabelExample/STTweetLabelExample.xcodeproj/project.xcworkspace/xcuserdata/sebastienthiebaud.xcuserdatad/UserInterfaceState.xcuserstate and b/STTweetLabelExample/STTweetLabelExample.xcodeproj/project.xcworkspace/xcuserdata/sebastienthiebaud.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/STTweetLabelExample/STTweetLabelExample.xcodeproj/xcuserdata/sebastienthiebaud.xcuserdatad/xcschemes/xcschememanagement.plist b/STTweetLabelExample/STTweetLabelExample.xcodeproj/xcuserdata/sebastienthiebaud.xcuserdatad/xcschemes/xcschememanagement.plist index 0f97173..914f28e 100644 --- a/STTweetLabelExample/STTweetLabelExample.xcodeproj/xcuserdata/sebastienthiebaud.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/STTweetLabelExample/STTweetLabelExample.xcodeproj/xcuserdata/sebastienthiebaud.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,6 +4,11 @@ SchemeUserState + Documentation.xcscheme + + orderHint + 1 + STTweetLabelExample.xcscheme orderHint @@ -12,6 +17,11 @@ SuppressBuildableAutocreation + 2527647C16AB82CB00103B6D + + primary + + 254E4346167E7475004191B6 primary diff --git a/STTweetLabelExample/STTweetLabelExample/STViewController.m b/STTweetLabelExample/STTweetLabelExample/STViewController.m index bef519b..de08e19 100755 --- a/STTweetLabelExample/STTweetLabelExample/STViewController.m +++ b/STTweetLabelExample/STTweetLabelExample/STViewController.m @@ -30,12 +30,9 @@ _tweetLabel = [[STTweetLabel alloc] initWithFrame:CGRectMake(20.0, 60.0, 280.0, 200.0)]; [_tweetLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:17.0]]; - [_tweetLabel setTextColor:[UIColor blackColor]]; - [_tweetLabel setText:@"Hi.This is a new tool for @you! Developed by->@SebThiebaud for #iPhone #ObjC... ;-)\nMy GitHub page: https://t.co/pQXDoiYA"]; + [_tweetLabel setTextColor:[UIColor blackColor]]; + [_tweetLabel setText:@"Hi. This is a new tool for @you! Developed by->@SebThiebaud for #iPhone #ObjC... ;-)\nMy GitHub page: https://t.co/pQXDoiYA"]; -// Shadow -// [_tweetLabel setShadowColor:[UIColor colorWithWhite:0.8 alpha:1.0]]; -// [_tweetLabel setShadowOffset:CGSizeMake(2.0, 1.0)]; STLinkCallbackBlock callbackBlock = ^(STLinkActionType actionType, NSString *link) {