создать UITextView, добавить текст к нему, и поставить его в представлении (с контейнером)boundingRectWithSize не уважает слово оберточной
UITextView *lyricView = [[UITextView alloc] initWithFrame:screen];
lyricView.text = [NSString stringWithFormat:@"\n\n%@\n\n\n\n\n\n", lyrics];
[container addSubview:lyricView];
[self.view addSubview:container];
я затем получить размер его для использования с кнопкой и добавить его в UITextView
CGRect size = [lyrics boundingRectWithSize:CGSizeMake(lyricView.frame.size.width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[lyricView font]}
context:nil];
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[doneButton setFrame:CGRectMake(56, size.size.height + 55, 208, 44)];
[doneButton setTitle:@"Done" forState:UIControlStateNormal];
[lyricView addSubview:doneButton];
Это работает в большинстве случаев . Это будет уважать \ n разрывы строк (например, я добавил в свой stringWithFormat), но он не будет уважать переносы слов, автоматически добавляемые текстовым представлением. Поэтому, если lyrics
имеет строку, которая не подходит на экране, UITextView будет ее обертывать (как и предполагалось), но size
теперь немного короче, чем это должно быть, потому что это не соответствовало обложению текстового представления.
вы пытались заменить '' NSStringDrawingUsesLineFragmentOrigin на 'NSStringDrawingUsesFontLeading'? Который ** Использует шрифт ведущих для расчета высоты строки ** – johnMa
@johnMa Когда я использую' NSStringDrawingUsesFontLeading', она возвращает 0. Когда я использую 'NSStringDrawingUsesLineFragmentOrigin' или оба , У меня проблема, описанная выше. – vqdave
Любое обновление по этому вопросу? У меня такая же проблема, и я не могу найти хороший ответ. –