Estoy crear elementos personalizados en mi aplicación y desea que coincida con la apariencia de la nueva iOS. iOS 7 nos presenta una muy común encendedor de color azul, el color predeterminado o el matiz de varios elementos, incluyendo el sistema de botón, segmentado de control, etc. Ellos han hecho que sea fácil para seleccionar el color con IB, como se ve aquí:

¿Cómo puedo obtener el iOS 7 color azul predeterminado mediante programación?

Sin embargo, no he encontrado la forma de acceder fácilmente al color de la programación. Comprobé la UIColor documentación, y no parece haber ningún descriptor de acceso azul para el sistema de color en la propia clase.

Aquí está mi pregunta: ¿un simple descriptor de acceso existen para este color? [UIColor ?] o algo por el estilo? Si no, ¿alguien sabe exactamente valores RGB de que color?

InformationsquelleAutor Joel H. | 2013-09-26

14 Comentarios

  1. 246

    Uso self.view.tintColor de un controlador de vista, o self.tintColor de un UIView subclase.

    • Yo iba a decir que usted puede utilizar UIView().tintColor, pero en realidad no se puede. No estoy seguro en qué momento el UIView obtiene el matiz de color de establecer…
    • Creo que el UIWindow o tal vez la raíz de la vista tiene la versión original. Vistas heredar su matiz de color de más vistas en el respondedor de la cadena, pero en tu ejemplo de la nueva visión no tiene superview.
    • self.view.tintColor desde dentro UIViewController.viewDidLoad() da el derecho de color azul.
  2. 234

    Parece ser [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0].

    ¿Cómo puedo obtener el iOS 7 color azul predeterminado mediante programación?

    • Curiosamente, el azul predeterminado en mi sistema parece ser 0:128:255 (utilizando la misma herramienta). Me pregunto si Apple ha cambiado recientemente?
    • Compruebe el espacio de color que usted está usando actualmente.
    • Ser cuidadoso en la forma en que el uso de este, como se puede cambiar en las siguientes versiones de iOS.
    • Sí, definitivamente no es una buena idea codificar cualquier valor que potencialmente podría cambiar. Especialmente cuando hay una API para consultar el valor real.
    • Swift versión UIColor(red: 0.0, green: 122.0/255.0, blue: 1.0, alpha: 1.0)
  3. 90

    de iOS 7 color azul predeterminado es R:0.0 G:122.0 B:255.0

    UIColor *ios7BlueColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0];
    • Y si usted prefiere hex: 0x007aff
    • Esto no es muy a prueba de futuro–si Apple cambia el valor predeterminado de tinte o color permite a los usuarios establecer predeterminado matiz de color de su aplicación no va a obtener el color correcto.
    • y en otro sistema: #007AFF
    • En Swift: vamos a defaultTintColor = UIColor(rojo: 0.0, verde: 122/255, azul: 1.0, alfa: 1)
  4. 48

    Según la documentación de UIButton:

    En iOS v7.0, todas las subclases de UIView derivan de su comportamiento para tintColor de la clase base. Ver la discusión de tintColor en el UIView nivel para obtener más información.

    Suponiendo que no cambie el tintColor antes de agarrar el valor predeterminado, puede utilizar:

    self.view.tintColor
    • Parece que la manera más segura para capturar el color.
    • Esto funciona para mí. Mi sharedApplication() no tiene un keyWindow con tintColor
  5. 26

    Aquí es un método sencillo para obtener el valor predeterminado del sistema matiz de color:

    + (UIColor*)defaultSystemTintColor
    {
       static UIColor* systemTintColor = nil;
       static dispatch_once_t onceToken;
       dispatch_once(&onceToken, ^{
          UIView* view = [[UIView alloc] init];
          systemTintColor = view.tintColor;
       });
       return systemTintColor;
    }
    • usted no necesita expedición de una vez por hilo principal materia. Un simple si nil será suficiente.
    • Por qué asumir que el método sólo será llamado desde el hilo principal? La sobrecarga de la dispatch_once es muy baja y es una sola si echa en el común de los casos.
    • Porque UIKit APIs no son de fondo thread-safe, por lo que llamar fuera del hilo principal no está permitido de todos modos.
    • eso es cierto, pero no es seguro de usar UIColor en varios subprocesos. Envolviendo en un dispatch_once permite de forma segura de recuperar este color en cualquier hilo. Y de nuevo, la sobrecarga es muy baja.
    • Entiendo acerca de la sobrecarga. Pero no estás solo tocar UIColor, vas a crear una UIView aquí, que, a lo mejor de mi conocimiento, no está seguro sobre la no-principales hilos. (Puedo estar equivocado, aunque no estoy seguro de donde está documentado de verificación.)
    • a partir de una prueba rápida parece que funciona bien. Desde el UIVIew documentación: «Manipulaciones de la aplicación de la interfaz de usuario debe ocurrir en el hilo principal. Por lo tanto, siempre debe llamar a los métodos de la UIView clase de código que se ejecuta en el hilo principal de la aplicación. La única vez que este puede no ser estrictamente necesario, es cuando se crea el objeto de vista de sí mismo, pero todos los demás manipulaciones deben realizarse en el subproceso principal.»
    • Una prueba rápida, no ayuda precisamente aquí. Sin embargo, los documentos parecen indicar que su uso es probablemente muy bien. Así que me estoy alejando de mi queja, y yo sólo voy a dejar un consejo general para evitar las cosas que están buscando problemas.

  6. 16

    swift 4:

    extension UIColor {
      static let system = UIView().tintColor!
    }
    • Creo firmemente que no se recomienda el uso forzado de desenvolver, ya que podría causar el bloqueo de la aplicación, si el comportamiento predeterminado de UIKit Marco va a ser cambiado en cualquier próxima versión. También matiz de color de una UIView instancia no podía garantizar que este color es un sistema de matiz de color.
    • Por qué deberían cambiar eso? Por favor, explique su punto de
    • no hay necesidad de explicación aquí, es sólo una mala práctica para el uso forzado de desenvolver, especialmente si se puede evitar.
  7. 14

    Obtener el color automáticamente mediante este código:

    static let DefaultButtonColor = UIButton(type: UIButtonType.System).titleColorForState(.Normal)!
  8. 11

    Esta extensión le da el sistema nativo de color azul.

    extension UIColor {
    
        static var systemBlue: UIColor {
            return UIButton(type: .system).tintColor
        }
    
    }

    Uso:

    myView.tintColor = .systemBlue
    • Esto va a crear UIButton cada vez que usted solicita systemBlue su mejor init este color una vez. El uso interno de la palabra en extensión interna no es amigable para el usuario. Mismo para el uso de la clase en lugar de estática. Y la llama «Azul» no es correcto, porque este color se puede cambiar más tarde como en macOS Mojave. Así static let system = UIView().tintColor! es todavía mucho mejor que su variante.
    • bien, mejor utilizar estático debido rendimiento de la memoria. Gracias por señalar a eso. Pero la llamaban «blue» sigue funcionando hasta iOS 12 y no relacionados con el macOS en todo. Para macOS usted tiene que tratar con NSColor tipo.
  9. 10

    La UIWindow.tintColor método no estaba trabajando para mí en iOS8 (todavía era negro), por lo que tenía que hacer esto:

    let b = UIButton.buttonWithType(UIButtonType.System) as UIButton
    var color = b.titleColorForState(.Normal)

    Esto le dio el buen tono azul visto en un UIBarButtonItem

    • Se siente un poco sucio, pero es mejor que codificar a un enlace de color que se pueden cambiar con el tiempo.
  10. 7

    De iOS 7 hay una API y usted puede conseguir (y definir) el matiz de color con:

    self.view.tintColor

    O si usted necesita el CGColor:

    self.view.tintColor.CGColor
  11. 6

    En muchos casos, lo que necesita es sólo

    [self tintColor] 
    //or if in a ViewController
    [self.view tintColor]

    o para swift

    self.tintColor
    //or if in a ViewController
    self.view.tintColor
    • auto.vista.tintColor más probable
  12. 3

    mientras establecer el color puede establecer el color como este

    [UIColor colorWithRed:19/255.0 green:144/255.0 blue:255/255.0 alpha:1.0]
    • ¿Por qué es necesario escribir /255.0 con cada rgb valor?
    • Porque los colores en los macs son un flotador entre 0.0 y 1.0.
  13. 2

    La adición de una categoría a UIColor la siguiente manera hará disponible para usted en cualquier momento que usted necesita o incluso cambiar su definición a través de su código:

    @interface UIColor (iOS7Colors)
    
    + (instancetype)iOS7blueColor;
    
    @end
    
    @implementation UIColor (SpecialColors)
    
    + (instancetype)iOS7blueColor;
    {
        return [UIColor colorWithRed:0.0f green:0.22f blue:122.0/255.0 alpha:1.0f];
    }

    Después de importar la Categoría en el código se puede llamar el color mediante el uso de:

    UIColor *myBlueColor = [UIColor iOSblueColor];
    • Por favor, trate de leer esto stackoverflow.com/help/deleted-answers, para obtener una mayor comprensión de cómo no respuesta. A saber: «las Respuestas que fundamentalmente no responder a la pregunta»: apenas más que un enlace a un sitio externo
    • Eh, ¿cómo podemos sacar de blue a red en + (instancetype)iOS7redColor;

Dejar respuesta

Please enter your comment!
Please enter your name here