NSMutableAttributedString с использованием NSLinkAttributedName

Получение этого из NSMutableAttributedString с помощью атрибута NSLinkAttributeName.

Использование html-файла в качестве имени ссылки. Как увеличить область текста.

-(NSMutableAttributedString *)attributedStringForLink:(NSString *)fullString
                                    attributedString :(NSMutableAttributedString  *)attributedString
                                             link:(NSString *)linkString
                                             path:(NSString *)pathString
                                             font:(UIFont *)textFont
                                            color:(UIColor *)textColor
                                        alignment:(NSTextAlignment)textAlign
{
    NSMutableAttributedString *attString;
    if(attributedString) {
        attString = attributedString;
    } else {
        attString = [[NSMutableAttributedString alloc]initWithString:fullString];
    }
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    [paragraphStyle setAlignment:textAlign];
    [paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping];
    NSDictionary *attributes = @{NSParagraphStyleAttributeName:paragraphStyle,
                                           NSFontAttributeName:textFont,
                                NSForegroundColorAttributeName:textColor};

    NSRange range = [fullString rangeOfString:linkString];
    [attString addAttributes:attributes range:range];
    [attString addAttribute:NSLinkAttributeName value:pathString range:range];
    [attString addAttribute:NSForegroundColorAttributeName value:textColor range:range];

    return attString;
}

person James Bonner    schedule 20.04.2020    source источник
comment
В чем конкретно заключается ваш вопрос? Как увеличить область текста? Изменить шрифт, используя новый размер шрифта?   -  person Larme    schedule 21.04.2020


Ответы (1)


Извините за действительно плохое описание проблемы. Использовал NSAttributedString со ссылкой, и это давало очень небольшой результат. Оказывается, это был мой собственный контроллер представления с небольшим UIWebView. Создайте новый UIViewController, содержащий UITextView, содержащий UIWebView. Добавьте следующий метод делегата:

-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL
         inRange:(NSRange)characterRange
     interaction:(UITextItemInteraction)interaction
{
    if([[URL absoluteString] isEqualToString:@""]) {
        return NO;
    }

    WebViewController *viewController = [[WebViewController alloc]init];

    viewController.pathString = [URL absoluteString];
    [self presentViewController:viewController animated:YES completion:nil];

    return NO;
}
person James Bonner    schedule 22.04.2020