Red de conocimiento informático - Material del sitio web - Cómo implementar múltiples selecciones de enumeraciones

Cómo implementar múltiples selecciones de enumeraciones

En Objective-C, las enumeraciones se pueden seleccionar de forma múltiple:

NSString* string = @"un fragmento de texto";

CGRect BoundingRect = [string BoundingRectWithSize: CGSizeMake(label. frame .width, CGFloat.max) opciones: NSStringDrawingUsesLineFragmentOrigin | Atributos NSStringDrawingUsesFontLeading: contexto de atributos: nil];

Tipos de opciones en Swift

La enumeración de Swift no admite selecciones múltiples, por lo que se permiten selecciones múltiples. posible El tipo de opción debe implementarse usando la estructura: RawOptionSet. Para implementar la opción escriba usted mismo, puede consultar la respuesta en Stack Overflow, que es cómo se porta el SDK oficial.

opciones de permiso: NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

letboundingRect = string.bridgeToObjectiveC().boundingRectWithSize(CGSizeMake(label.frame.width, CGFloat.max), opciones: opciones, atributos: atributos, contexto: nil)

Error del SDK de iOS

Los desarrolladores pueden escribir este código directamente en OS X 10.10, pero en la versión actual del SDK de iOS 8. Pero no se puede compilar. Esto se debe a que en el SDK de iOS 8, NSStringDrawingOptions se transfirió como enum: Int en lugar de struct: RawOptionSet. ¿Cómo solucionar este problema? Sólo puedes resolver este problema tomando prestado Objective-C.