Как заставить TTTAttributedLabel программно выравнивать центр в IOS
Я занимаюсь разработкой приложения, в котором у меня есть строка, состоящая из тегов с префиксом #.
Я использую TTTAttribute Label для добавления ссылок на слова, которые имеют префикс # в данной строке.
Когда я добавил ссылки на ярлык TTTAttribute. Он успешно добавлен, и при нажатии на него я могу получить выбранное слово с префиксом # в этой строке.
Но я не смог выровнять по центру метку TTTAttribute в зависимости от длины строки.
Свойство по умолчанию
attributedLabel.verticalAlignment=TTTAttributedLabelVerticalAlignmentCenter;
не работает при применении ссылок. Я хочу, чтобы метка выравнивала центр по его длине, как показано ниже.
Если это обычная метка TTTAttribute без применения ссылок, то свойство выравнивания по умолчанию применяется правильно.
Вот код, который я использовал для добавления ссылок..
- (void)viewDidLoad
{
[super viewDidLoad];
NSRange matchRange;
NSString *tweet = @"#MYTWEET ,#tweet, #fashion #Share";
NSScanner *scanner = [NSScanner scannerWithString:tweet];
if (![scanner scanUpToString:@"#" intoString:nil]) {
// there is no opening tag
}
NSString *result = nil;
if (![scanner scanUpToString:@" " intoString:&result]) {
// there is no closing tag
}
//@"theString is:%@",result);
NSArray *words = [tweet componentsSeparatedByString:@" "];
TTTAttributedLabel *attributedLabel=[[TTTAttributedLabel alloc]initWithFrame:CGRectMake(5, 200, 320, 40)];
attributedLabel.textAlignment=NSTextAlignmentCenter;
attributedLabel.text=tweet;
words = [tweet componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",0123456789`~!@$%^&*()_-+=.></?;:'* "]];
for (NSString *word in words)
{
if ([word hasPrefix:@"#"])
{
//@"word %@",word);
// Colour your 'word' here
matchRange=[tweet rangeOfString:word];
[attributedLabel addLinkToURL:[NSURL URLWithString:word] withRange:matchRange];
[tagsarray addObject:word];
}
}
attributedLabel.delegate=self;
}
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url
{
//@"result ==== %@",url);
NSString *webString=[NSString stringWithFormat:@"%@",url];
NSString *tagstring = [webString stringByReplacingOccurrencesOfString:@"#" withString:@""];
NSLog(@"Tag String is:%@",tagstring);
}
Я не хочу изменять размер фрейма ярлыка TTTAttribute.
Любые предложения или помощь будут оценены.
Заранее спасибо..
2 ответа
Это очень просто, используйте следующий код:
attributedLabel.textAlignment = NSTextAlignmentCenter;
Вам нужно установить атрибуты ссылки с набором стилей абзаца:
NSMutableParagraphStyle* attributeStyle = [[NSMutableParagraphStyle alloc] init];
attributeStyle.alignment = NSTextAlignmentCenter;
NSDictionary *attributes = @{NSFontAttributeName:[UIFont fontWithName:@"Helvetica Neue" size:11], NSForegroundColorAttributeName:[UIColor colorWithRed:0.324 green:0.0 blue:0.580 alpha:1.0], NSParagraphStyleAttributeName:attributeStyle};
[self.atributedLabel setLinkAttributes:attributes];