Xcode 6 tem um novo recurso onde fontes e tamanhos de fonte em UILabel
,UITextField
e UIButton
pode ser definido automaticamente com base na classe de tamanho da configuração do dispositivo atual, mesmo no storyboard. Por exemplo, você pode definir a UILabel
para usar o tamanho de fonte 12 em configurações de "qualquer largura, altura compacta" (como em iPhones em paisagem) e o tamanho 18 em configurações de "largura regular, altura regular" (como em iPads ). Mais informações estão disponíveis aqui:
developer.apple.com/size_class
Este é um ótimo recurso em teoria porque pode tornar desnecessário definir fontes diferentes programaticamente em recursos de IU com base na configuração do dispositivo. No momento, tenho um código condicional que define as fontes com base no tipo de dispositivo, mas, obviamente, isso significa que tenho que definir as fontes de forma programática em todo o aplicativo. Eu estava inicialmente muito animado com esse recurso, mas descobri que ele tem um grave problema de uso real para mim (talvez um bug). Observe que estou construindo com base no SDK 8 e definindo um destino mínimo de implantação do iOS 8 , portanto, isso não tem nada a ver com a compatibilidade com versões antigas do iOS.
O problema é o seguinte: Se eu definir tamanhos de fonte diferentes para classes de tamanho diferentes e usar a fonte "Sistema" fornecida pelo iOS , tudo funcionará conforme o esperado e os tamanhos de fonte mudam com base na classe de tamanho. Se eu usar uma fonte personalizada fornecida pelo meu aplicativo (sim, eu a configurei corretamente no pacote do meu aplicativo, pois funciona de forma programática) e definir a fonte personalizada para um rótulo em um storyboard XCode 6 , que também funciona conforme o esperado. Mas quando tento usar tamanhos diferentes de fonte personalizada para classes de tamanhos diferentes, no storyboard, de repente não funciona. A única diferença na configuração é a fonte que escolhi (uma fonte personalizada versus a fonte do sistema). Em vez disso, todas as fontes aparecem nodispositivo e simulador como a fonte padrão do sistema no tamanho padrão , independentemente da classe de tamanho (e eu verifiquei por meio do depurador que ele está substituindo a fonte do sistema pela real especificada no storyboard). Então, basicamente, o recurso de classe de tamanho parece estar quebrado para fontes personalizadas. Além disso, curiosamente, as fontes personalizadas realmente exibem e ajustam o tamanho corretamente no painel "Visualização" do XCode 6 para o controlador de visualização: ele para de funcionar apenas quando executado no sistema iOS real (o que me faz pensar que estou configurando corretamente) .
Tentei várias fontes personalizadas diferentes e não parece funcionar com nenhuma delas, mas sempre funciona se eu usar "Sistema".
Enfim, mais alguém viu esse problema no Xcode 6 ?
Alguma ideia se isso é um bug no iOS 8, Xcode ou algo assim
Eu estou fazendo errado?
A única solução que encontrei, como disse, é continuar a definir as fontes de maneira programática, como fiz em cerca de três versões do iOS, porque isso funciona.
Mas eu adoraria poder usar esse recurso se pudesse fazê-lo funcionar com fontes personalizadas. Usar a fonte System não é aceitável para nosso design.
INFORMAÇÕES ADICIONAIS: a partir do Xcode 8.0, o bug foi corrigido.