Accéder au contenu principal

Articles

Affichage des articles du 2022

Adapter l'interface à la taille des caractères pour malvoyants.

Depuis quelques temps, je fais attention aux réglages de la taille des caractères systèmes. Les malvoyant peuvent décider dans les Réglages de l'iPad, Accessibilité de changer la taille des textes par défaut : Mais dans ce cas, les interfaces sont souvent trop petites, et les texte ne rentre pas dedans. Si vous avez besoin d'une valeur en pixel, en proportion du niveau de zoom des caractères, vous devez utilisez UIFontMetrics. if ( @available (iOS 11.0 , *)) {    larg = [ UIFontMetrics . defaultMetrics scaledValueForValue :larg]; } Ici, vous ne verrez aucune différence à moins de changer les réglages d'accessibilité. Mais, si vous touchez aux réglages, votre valeur en pixels correspondra au niveau de zoom. Cette fonctionnalité n'existe que depuis IOS 11, il faut donc mettre un available si vous compilez comme moi des apps pour IOS9. Je me sers de cette fonctionnalité, par exemple, dans : - ( CGSize ) collectionView :( UICollectionView *)collectionView             layo

archivedDataWithRootObject

archivedDataWithRootObject: est deprecated depuis IOS12.   NSData *data = [ NSKeyedArchiver archivedDataWithRootObject : @{} ]; // deprecated ISO12 Cela va avec l'avancée de SWIFT qui ne permet pas facilement de faire des tableaux de "trucs" non définis. C'est la nouvelle option requiringSecureCoding qui indique si le tableaux (NSDictionnary ou NSArray) peut contenir n'importe quoi ou uniquement des objets bien définis.   NSData  *data  = [ NSKeyedArchiver   archivedDataWithRootObject : @{}   requiringSecureCoding : NO   error :&error]; Le problème est que la fonction pour dés-archiver n'est pas deprecated, mais plante ! NSDictionary *dico = [ NSKeyedUnarchiver unarchivedObjectOfClass : NSDictionary . class                                                          fromData :data error :&error];  // plante Si l'on désire faire comme avant, il faut un requiresSecureCoding:NO, mais il n'y a pas le pendant du archivedDataWithRootObject ! Il n&#