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 textSelectable
is 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.