UIToolBar con la reducción de la alfa, quiero UIBarButtonItem tener alpha 1

Tengo un UIToolbar con el alpha configurado .6. Se ve genial – pero deja los botones con un alfa de .6 así, que está bien, pero no es realmente deseable. Hay alguna manera de establecer independientemente de la alfa de un UIBarButtonItem? ¿Cómo hago para conseguir estos a mirar en blanco en lugar de ligeramente atenuado?

6 Kommentare

  1. 12

    Cuando se establece el alfa en una vista, todas las subvistas están compuestas con el mismo valor de alfa. Lo que usted puede hacer en lugar de establecer el alfa en la propia vista es utilizar una tinta de color o el color de fondo con un valor de alfa. Esto puede producir efectos similares, sin causar todas las subvistas para heredar la transparencia.

    toolbar.tintColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];

    Si esto no funciona y que realmente necesita para hacer que la vista transparente a sí mismo, usted tendrá que rehacer su punto de vista de la jerarquía, de modo que el opaco puntos de vista no son subvistas. Desde el botón de la barra de los productos que no están disponibles como estándar, puntos de vista, probablemente no va a ser viable en el caso de la barra de herramientas.

  2. 12
    self.bottomToolbar.barStyle = UIBarStyleBlack;
    self.bottomToolbar.translucent = YES;
    self.bottomToolbar.backgroundColor = [UIColor clearColor];

    Ver opacidad set a 1 y los ajustes que hizo por mí.

    • Esta es la mejor respuesta
    • También puede establecer esta en InterfaceBuilder/Storyboard (Estilo «Translucent Black»)
  3. 1

    Arriba no me funciona en iOS 4.3, pero este hizo:

    Subclase UIToolbar, proporcionan un método:

    - (void)drawRect:(CGRect)rect 
    {
    [[UIColor colorWithWhite:0 alpha:0.6f] set]; //or clearColor etc
    CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
    }
  4. 1

    He encontrado que barStyle hace n’realmente importa. Tampoco es establecer el color de fondo claro.

    self.toolbar.barStyle = UIBarStyleDefault;
    self.toolbar.tintColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    self.toolbar.translucent = YES;

    Esas líneas de hecho el trabajo para mí(ios4.3).
    Como puedo entender, la configuración de las barras de herramientas transfluent de propiedad en SÍ se ha de establecer para estar con claro(transparente) de fondo. Por supuesto depende del matiz de color que has establecido. Si no contiene el componente alfa de la barra será opaco.

  5. 1

    El principal problema con el control de el valor alfa de la barra de herramientas es que se aplica a toda la barra de herramientas y los botones. Si se establece un backgroundColor con algún valor de alfa < 1, a los que resulten de color se combina con la barStyle (UIBarStyleDefault o UIBarStyleBlack) lo que se traduce en una más opaca de color que el original backgroundColor. Si establece el barTintColor, parece reemplazar todas las demás opciones, incluyendo cualquier valor de alfa de establecer, lo que resulta en una forma completamente opaca de color.

    La única manera en la que he sido capaz de hacer reducir el alfa de la barra de herramientas sin que afecte a sus botones es por la configuración de su imagen de fondo a través de setBackgroundImage:forToolbarPosition:barMetrics:. Usted puede crear un 1×1 píxel de la imagen con el color deseado y alfa:

    + (UIImage *)onePixelImageWithColor:(UIColor *)color {
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(NULL, 1, 1, 8, 0, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
        CGContextSetFillColorWithColor(context, color.CGColor);
        CGContextFillRect(context, CGRectMake(0, 0, 1, 1));
        CGImageRef imgRef = CGBitmapContextCreateImage(context);
        UIImage *image = [UIImage imageWithCGImage:imgRef];
        CGImageRelease(imgRef);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        return image;
    }

    [Swift versión]

    A continuación, establecer la Imagen de fondo:

    [toolbar setBackgroundImage:[self onePixelImageWithColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]
             forToolbarPosition:UIBarPositionBottom
                     barMetrics:UIBarMetricsDefault];
    • Esta es la respuesta correcta para iOS 9
  6. 0

    Después de muchas horas de evaluar cada uno de los métodos anteriores, sólo he encontrado el método proporcionado por Ryan H. es factible. Es porque este es el método que se puede manipular el valor de alfa, mientras que otras no.

    Aquí está la versión para Swift 3:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        let bgImageColor = UIColor.black.withAlphaComponent(0.6) //you can adjust the alpha value here
        self.upperToolBar.setBackgroundImage(onePixelImageWithColor(color: bgImageColor),
              forToolbarPosition: .any,
              barMetrics: UIBarMetrics.default)
    }
    
    func onePixelImageWithColor(color : UIColor) -> UIImage {
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
        var context = CGContext(data: nil, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue)
        context!.setFillColor(color.cgColor)
        context!.fill(CGRect(x:0,y: 0, width: 1, height:1))
        let image = UIImage(cgImage: context!.makeImage()!)
        return image
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea