#iphone #ipad #universal #uifont
#iPhone #iPad #Универсальный #uifont
Вопрос:
Я создаю универсальное приложение для iPhone и iPad. Я знаю, что есть возможность определить, что текст должен уменьшаться до выбранного размера точки, когда он слишком большой, однако мне нужно, чтобы текст увеличивался, когда текст отображается на iPad. Возможно ли это? У меня есть метка размером в 18 точек. Это почти занимает всю ширину на iPhone с учетом длины текста. Но на iPad этого не будет из-за увеличенного размера экрана…
Спасибо, что уделили мне время.
Комментарии:
1. Как насчет того, чтобы сделать размер шрифта намного больше, предполагая, что он будет уменьшен до размеров iPad и iPhone по отдельности? Я не пробовал этого, просто предлагаю это как идею.
Ответ №1:
У меня была такая же проблема в универсальном приложении.
Я установил параметры автоматического изменения размера для масштабирования всех компонентов непосредственно в Interface Builder, но это не увеличивало размер шрифта, чтобы занять вновь предоставленное пространство экрана.
В итоге я обновил viewDidLoad
каждого представления с помощью приведенного ниже кода, в основном выполнив итерацию по компоненту представления и удвоив размер точки для всех меток (также можно сделать для кнопок):
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
for (UIView *component in self.view.subviews) {
if ([component isKindOfClass:[UILabel class]]) {
UILabel *labelToUpdate = (UILabel *) component;
[labeltoUpdate setFont:[labelToUpdate.font fontWithSize:labelToUpdate.font.pointSize*2]];
}
}
Теперь приложение отлично масштабируется с iPhone на iPad.
Ответ №2:
Вы могли бы использовать метод в цикле:
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode
пока вы не получите совпадение, занимающее две строки, используйте предыдущий размер шрифта. Кажется, быстрее / проще просто использовать идиомы для определения конкретного размера для iPad.