En iOS 6 SDK escribí las siguientes líneas de código para mostrar una imagen dentro de un botón:

NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];

Pero ahora con Xcode 5 y iOS 7 no funciona. El botón no contiene la imagen. El botón está lleno de color azul.

  • La imagen muestra cuando se haga clic en el botón?
InformationsquelleAutor user2665539 | 2013-08-08

14 Comentarios

  1. 373

    En iOS7 hay un nuevo tipo de botón llamado UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), //sistema estándar botón

    Comprobar su .xib archivo y cambiar el tipo de botón Personalizado Configuración de UIButton resultados de imagen en el botón azul en iOS 7

    Hacerlo mediante programación, añada esta línea a la viewDidLoad:

    [UIButton buttonWithType:UIButtonTypeSystem]; 
    
    • Cómo se puede hacer esto en el código?
    • [UIButton buttonWithType:UIButtonTypeSystem];
    • Tenga en cuenta que esta solución no quitar el sistema de color del matiz, sino que también resulta en una difícil transición entre el relieve y estados normales. Si usted está buscando para preservar el comportamiento del sistema, animaciones, etc., pero quiere deshacerse de un tono de color, trate de [myUIButton setImage: [[UIImage imageNamed: @"myButtonImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal]; (con el botón de conjunto de tipo de «Sistema» en IB).
    • Gracias esto fue muy útil. En nuestro caso, el botón, incluso recorte a la forma del PNG transparente y colorear.
    • Geezm se escondieron de que un bien no?!
    • No funciona para iOS 8.0…!!!!!
    • funciona 🙂 u podría tener algún otro problema en el código de ur. Si usted mira en Xcode 6.1 se puede ver claramente las opciones disponibles..
    • Sé que hace más de dos años, pero podría usted comprobar el aprobado editar en el final de su respuesta – no debería ser UIButtonTypeCustom? Edición realmente debería haber sido rechazada de todos modos, incluso si había sido correcto, como debe haber sido publicado como un comentario en su lugar.
    • (por no mencionar el hecho de que sólo la adición de la línea en cuestión no va a hacer nada útil en todos)
    • en swift : UIButton(tipo: UIButtonType.Personalizada), gracias!

  2. 53

    Parece que iOS 7 es el uso de la imagen como una máscara Alfa para mostrar el botón del matiz de color.
    Cambiar el tipo de botón para UIButtonTypeCustom hizo el truco para mí (gracias user716216!).
    Establecer la imagen como imagen de fondo no siempre funciona si usted ya tiene una imagen de fondo, como fue mi caso.

    • Estaba luchando con el por un tiempo 😀 gracias tio
    • Gracias! Usuario Original se olvidó de que lo acepte como la respuesta.
    • es trabajo para mí , pero el cambio de sistema no funciona en mi caso , gracias a todos de su contribución
  3. 25

    Swift 3 :

    let image = UIImage(named: "my-image")
    myButton.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)
    
  4. 23

    Hay una buena probabilidad de que la imagen está allí y que usted simplemente no puede ver. Trate de cambiar el botón del tipo de UIButtonTypeCustom. Si eso no funciona, ajuste el botón color de fondo para [UIColor clearColor];

  5. 9

    El problema es el TintColor. De forma predeterminada, iOS lanza un tinte de color azul color sobre cada botón. Usted puede conseguir alrededor de él a través de 3 formas.

    1. Cambiar el matiz de color. [button setTintColor:[UIColor blackColor]];
      Esto puede color de su imagen en maneras en las que usted no desea.

    2. Como la mayoría de los otros sugerido, establecer la imagen de fondo. [button setBackgroundImage:[UIImage...]];

    3. Agregar un UIImageView a su botón.

    UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];

    [button addSubView:img];

  6. 9

    Para swift:

        let aButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
    
    • Gracias tio esto también funciona en Obj C
    • Yep, que hizo el truco.
  7. 6

    He tenido el mismo problema.
    En mi storyboard yo tenía un botón sin ninguna imagen.

    Me gustaría, a continuación, asignar la imagen en el código.

    De IOS 7 llegó y tengo un montón de imágenes azules.

    La resolución fue simple pero confuso. Si puedo asignar cualquier imagen en el guión gráfico y, a continuación, cambiar la imagen en tiempo de ejecución que funciona bien.

    Usted siempre debe especificar una imagen de inicio en el guión gráfico, incluso si usted no va a usar.

    • Esto es lo que funcionó para mí
  8. 3

    Esto funcionó para mí

    [myButton1 setBackgroundImage:[UIImage imageNamed:@"phones.png"] forState:UIControlStateNormal];
    

    Nota:Quitar el frontal de la imagen antes de hacer esto.

    • cómo quitar la imagen de fondo por favor!!
  9. 3

    Hilo viejo, pero yo quería hablar porque yo sólo tenía el mismo problema. El problema era simplemente que usted está llamando setImage cuando usted debe llamar a setBackgroundImage.

  10. 1

    Ninguna de las soluciones que estaban trabajando para mí. Si no se establece una imagen inicial en el Guión gráfico, puede cambiar la imagen del botón mediante el uso de setBackgroundImage.

    Por su ejemplo, sólo un menor de edad es necesario el cambio.

    NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
    NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
    UIImage *thumb2 = [UIImage imageWithData:thumbData2];
    [btn2 setBackgroundImage:thumb2 forState:UIControlStateNormal];
    [self.view addSubview:btn2];
    
  11. 1

    Este Problema se llama de color azul el problema del botón en xcode.
    Cuando hacemos botón por el código del botón de muestra el tinte azul el color por defecto.Esto puede ser resuelto por la asignación de matiz de color blanco o en negro, en consecuencia, a tu celda de color.
    El código es :

    UIImage *closebtnimg = [UIImage imageNamed:@"icon_uncheck.png"];
     UIImage *closebtnimg1 = [UIImage imageNamed:@"icon_checked.png"];
    
    Custombutton *button = [Custombutton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(52, 66, 25, 24)];
    [button setBackgroundImage:closebtnimg forState:UIControlStateNormal];
    [button setBackgroundImage:closebtnimg1 forState:UIControlStateSelected];
    [button setTintColor:[UIColor whiteColor]];
    [cell.contentView addSubview:button];
    [button addTarget:self action:@selector(changeImage:)  forControlEvents:UIControlEventTouchUpInside];
    
    • es bastante útil @Shane
  12. 1

    Con Xcode 9.2 ninguna de las soluciones anteriores trabajado para lo que yo estaba buscando.

    Yo estaba buscando una solución que me permitirá establecer .normal y .selected UIControlState imágenes dentro del guión gráfico para su original el modo de representación de, pero, dentro de la Swift archivo, no literales de cadena debe existir en relación con los nombres de imagen.

    Básicamente, dentro de su código obtendrá la imagen se establece en el interior de su guión para .normal estado y volver a renderizar como .alwaysOriginal (el Mismo para .selected estado), entonces, se establece que de la imagen (que ahora es mostrado como original y no se verá afectado por el tinte) para el estado (.normal y .selected) de su UIButton.

    Aquí es:

    //Get your .normal image (you set via your storyboard) and render it as original
    let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
    //Set your normal image but this time rendered as original
    yourButton.setImage(unselectedImage, for: .normal)
    //Same for selected state
    let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
    yourButton.setImage(selectedImage, for: .selected)
    

    De esta manera usted puede configurar el botón de la imagen de los estados y si el nombre de la imagen va a cambiar, no va a afectar el código.

    • muchas gracias , realmente me ayudan
  13. 0

    hacer el matiz de color como clearcolor para todos los cuatro estados(por Defecto,Destacó,seleccionado,personas con discapacidad), trabajó para mí.

  14. -1

    En Swift 4, inicializar su UIButton y asignar uyour los Datos de la imagen de la siguiente manera:

    let myButton = UIButton(type: .cutsom)
    myButton.setImage(UIImage(data:myImageData), for: .normal)
    

Dejar respuesta

Please enter your comment!
Please enter your name here