Domanda

Ho un'immagine 480x331 e ha uno sfondo trasparente. La parte trasparente è proprio attorno ai bordi dell'immagine. Il mio UIButton è 72x37. Quando imposto l'immagine come immagine di sfondo in IB per il pulsante, i bordi trasparenti dell'immagine appaiono bianchi nel pulsante. Senza un'immagine, il pulsante è bianco con angoli arrotondati. Immagino che sia il bianco che vedo arrivare. In tal caso, significa che la trasparenza dell'immagine funziona ma l'area bianca del pulsante viene visualizzata.

Se imposto l'immagine sulla proprietà Image di UIButton, non viene ridimensionata correttamente, anche dopo aver modificato la modalità di visualizzazione, e rimane a dimensione intera.

Qualche suggerimento su quale proprietà dovrei usare per far funzionare correttamente il ridimensionamento e la trasparenza?

È stato utile?

Soluzione

Che tipo di pulsante stai usando?

A quanto pare si sta probabilmente usando lo stile UIButtonTypeRoundedRect, ma UIButtonTypeCustom potrebbe essere più adatto. Puoi modificarlo nella finestra di ispezione di Interface Builder.

Altri suggerimenti

@Christopher Fairbaim ha ragione a suggerire l'uso di UIButtonTypeCustom. L'uso di UIButtonTypeRoundedRect ti darà lo sfondo bianco in aree trasparenti.

Tuttavia, il cablaggio delle cose in Interface Builder ha i suoi limiti. Se desideri generare dinamicamente UIVview, UIButton e risorse da un set di dati o in base all'input dell'utente, farlo in modo programmatico è la strada da percorrere.

Per creare il pulsante: (Nota: funzionerà anche con altri UIButtonTypes, ma ho usato UIButtonTypeCustom per questo particolare esempio di trasparenza.)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];

Per modificare le proprietà desiderate:

btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37);  //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];

Per aggiungere immagini per vari stati (supponiamo che siano .png trasparenti):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];

Per aggiungere il pulsante alla vista (dall'interno di una classe viewController):

[self addSubview:btnName];

(Perdonate qualsiasi errore di battitura, mentre copiavo e incollavo uno dei miei progetti e cercavo di generalizzare la denominazione.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top