A custom UILabel for iOS with certain words tappable like Twitter (#Hashtag, @Handle and links).
Please use CocoaPods and include STTweetLabel in your Podfile.
Important: STTweetLabel 3.0 is based on TextKit and is only compatible with iOS 7 and above.
Build and run the project STTweetLabelExample in Xcode to see STTweetLabel in action.
STTweetLabel *tweetLabel = [[STTweetLabel alloc] initWithFrame:CGRectMake(10.0, 60.0, 300.0, 160.0)];
[tweetLabel setText:@"Hi. This is a new tool for @you! Developed by @SebThiebaud for #iPhone #ObjC... and #iOS7 ;-) My GitHub page: https://t.co/pQXDoiYA"];
[self.view addSubview:tweetLabel];Don't forget to implement the detectionBlock. Without implementing this block, you won't be able to detect if somebody has clicked on the hashtag, handle or even a link.
Blocks are easy. All you need to do is add a few lines of code:
[tweetLabel setDetectionBlock:^(STTweetHotWord hotWord, NSString *string, NSString *protocol, NSRange range) {
// Do something
}];NSString *text: The text to display.NSArray *validProtocols: All valid protocols for link (by default:@[@"http", @"https"]).BOOL leftToRight: Writing direction (by default:YES).BOOL textSelectable: Allows the user to select the text (by default:YES).UIColor *selectionColor: IfBOOL textSelectableis enabled, it's the color of the selection's background (by default:[UIColor colorWithWhite:0.9 alpha:1.0]).NSTextAlignment textAlignment: Text alignment (by default:NSTextAlignmentLeft).
The two following methods refresh the component. That means you should only set the attributes at the initialization of your STTweetLabel instance.
-[STTweetLabel setAttributes:(NSDictionary *)attributes]: Dictionary with attributes for all text.-[STTweetLabel setAttributes:(NSDictionary *)attributes hotWord:(STTweetHotWord)hotWord]: Dictionary with attributes for specific STTweetHotWord.-[STTweetLabel suggestedFrameSizeToFitEntireStringConstraintedToWidth:(CGFloat)width: Returns the CGSize calculated for the text submitted.
Inspired by the original Twitter application.
Sebastien Thiebaud
STTweetLabel is available under the MIT license.
