tipos tipo teclado tamaño plus para letras letra fuentes fuente como cambiar aumentar aplicacion ios uifont

ios - tipo - fuentes para iphone



¿Cómo detectar cambios de tamaño de fuente dinámicos desde la configuración de iOS? (2)

Dentro de la configuración-> general-> tamaño del texto, después de cambiar el tamaño del texto, tendría que salir de mi propia aplicación para aplicar los tamaños

[UIFont preferredFontForTextStyle:..]

¿Hay algún delegado o notificación para notificar a mi aplicación que vuelva a aplicar los nuevos tamaños?

Actualización: Intenté lo siguiente pero, curiosamente, el tamaño de la fuente se aplicará después de I BG y lanzar la aplicación DOS VECES.

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fromBg:) name:UIApplicationDidBecomeActiveNotification object:nil]; } -(void) fromBg:(NSNotification *)noti{ self.headline1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; self.subHeadline.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]; self.body.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody]; self.footnote.font = [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote]; self.caption1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1]; self.caption2.font = [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2]; // [self.view layoutIfNeeded]; }


Con Swift 4.2, de acuerdo con sus necesidades, puede elegir una de las tres soluciones siguientes para resolver su problema.

# 1. Usando UIContentSizeCategoryAdjusting adjustsFontForContentSizeCategory propiedad

Desde iOS10, UILabel , UITextField y UITextView ajustan al protocolo UIContentSizeCategoryAdjusting y, por lo tanto, tienen una propiedad de instancia llamada adjustsFontForContentSizeCategory . adjustsFontForContentSizeCategory tiene la siguiente declaración:

Un valor booleano que indica si el objeto actualiza automáticamente su fuente cuando cambia la categoría de tamaño de contenido del dispositivo.

var adjustsFontForContentSizeCategory: Bool { get set }

La implementación de UIViewController continuación muestra cómo detectar y reaccionar ante los cambios dinámicos en el tamaño de fuente en la configuración de iOS con adjustsFontForContentSizeCategory :

import UIKit class ViewController: UIViewController { let label = UILabel() override func viewDidLoad() { super.viewDidLoad() label.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." label.numberOfLines = 0 label.font = .preferredFont(forTextStyle: UIFont.TextStyle.body) label.adjustsFontForContentSizeCategory = true view.addSubview(label) // Auto layout label.translatesAutoresizingMaskIntoConstraints = false let horizontalConstraint = label.centerXAnchor.constraint(equalTo: view.centerXAnchor) let verticalConstraint = label.centerYAnchor.constraint(equalTo: view.centerYAnchor) let widthConstraint = label.widthAnchor.constraint(equalToConstant: 300) NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, widthConstraint]) } }

# 2. Usando la propiedad de tipo UIApplication UIContentSizeCategoryDidChange

Desde iOS 7, UIApplication tiene una propiedad de tipo llamada UIContentSizeCategoryDidChange . UIContentSizeCategoryDidChange tiene la siguiente declaración:

Se publica cuando el usuario cambia la configuración de tamaño de contenido preferido.

static let UIContentSizeCategoryDidChange: NSNotification.Name

Esta notificación se envía cuando cambia el valor de la propiedad preferredContentSizeCategory . El diccionario de información de userInfo de la notificación contiene la clave UIContentSizeCategoryNewValueKey , que refleja la nueva configuración.

La implementación de UIViewController continuación muestra cómo detectar y reaccionar a los cambios dinámicos del tamaño de fuente en la configuración de iOS con UIContentSizeCategoryDidChange :

import UIKit class ViewController: UIViewController { let label = UILabel() override func viewDidLoad() { super.viewDidLoad() label.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." label.numberOfLines = 0 label.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body) view.addSubview(label) // Register for `UIContentSizeCategory.didChangeNotification` NotificationCenter.default.addObserver(self, selector: #selector(preferredContentSizeChanged(_:)), name: UIContentSizeCategory.didChangeNotification, object: nil) // Auto layout label.translatesAutoresizingMaskIntoConstraints = false let horizontalConstraint = label.centerXAnchor.constraint(equalTo: view.centerXAnchor) let verticalConstraint = label.centerYAnchor.constraint(equalTo: view.centerYAnchor) let widthConstraint = label.widthAnchor.constraint(equalToConstant: 300) NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, widthConstraint]) } @objc func preferredContentSizeChanged(_ notification: Notification) { label.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body) /* perform other operations if necessary */ } }

# 3. Usando la propiedad UITraitCollection preferredContentSizeCategory

Desde iOS 10, UITraitCollection tiene una propiedad llamada preferredContentSizeCategory . preferredContentSizeCategory tiene la siguiente declaración:

La opción de tamaño de fuente preferida por el usuario.

var preferredContentSizeCategory: UIContentSizeCategory { get }

Con Dynamic Type, los usuarios pueden solicitar que las aplicaciones muestren texto usando fuentes que sean más grandes o más pequeñas que el tamaño de fuente normal definido por el sistema. Por ejemplo, un usuario con una discapacidad visual puede solicitar un tamaño de fuente predeterminado más grande para que sea más fácil leer el texto. Utilice el valor de esta propiedad para solicitar un objeto UIFont que coincida con el tamaño solicitado por el usuario.

La implementación de UIViewController continuación muestra cómo detectar y reaccionar ante cambios de tamaño de fuente dinámicos en la configuración de iOS con preferredContentSizeCategory :

import UIKit class ViewController: UIViewController { let label = UILabel() override func viewDidLoad() { super.viewDidLoad() label.text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." label.numberOfLines = 0 label.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body) view.addSubview(label) // Auto layout label.translatesAutoresizingMaskIntoConstraints = false let horizontalConstraint = label.centerXAnchor.constraint(equalTo: view.centerXAnchor) let verticalConstraint = label.centerYAnchor.constraint(equalTo: view.centerYAnchor) let widthConstraint = label.widthAnchor.constraint(equalToConstant: 300) NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, widthConstraint]) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) if previousTraitCollection?.preferredContentSizeCategory != traitCollection.preferredContentSizeCategory { self.label.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body) /* perform other operations if necessary */ } } }

Fuentes: