[iPhone] UIButton backgroundcolor image transparant

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • t1mmy
  • Registratie: Mei 2006
  • Laatst online: 14-08 16:39
Zo, hopelijk een redelijk duidelijke titel mee gegeven.
Ik ben bezig met een play/pauze knop te maken en moet hiervoor de 'backgroundcolor' dus variabel mee geven, dit doe ik op deze manier:

code:
1
self.pauseButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"play.png"]];


Het werkt enzo alleen, het plaatje is nu niet meer transparant. Ik heb al verschillende dingen gedaan, zoals de button via code defineren en aanmaken enzo ook alleen dit mocht niet baten.

Heeft iemand een oplossing voor mijn probleem? Een andere (makkelijkere) manier om dit op te lossen zou zijn dat ik de achtergrond van het plaatje de achtergrond van het item er onder maak alleen dit is natuurlijk niet echt een mooie oplossing.

Acties:
  • 0 Henk 'm!

  • MacWolf
  • Registratie: Januari 2004
  • Laatst online: 06-09-2024
Heb je de alpha op de button gezet middels:

C:
1
[button setAlpha:0.5];


Edit: als je via code de button aanmaakt, zou het volgende moeten werken:

C:
1
2
3
4
5
6
7
8
   UIImage *buttonImage = [UIImage imageNamed:@"button.png"];
   CGRect buttonFrame = CGRectMake(0.0f, 0.0f 100.0f, 100.0f);
   UIButton *button = [[[UIButton alloc] initWithFrame:buttonFrame];
   [button setBackgroundColor:[UIColor colorWithPatternImage:buttonImage]];
   [button setAlpha:0.5f];
   [self.view addSubview:button];
   [self.view setBackgroundColor:[UIColor purpleColor]];
   [button setCenter:self.view.center];

[ Voor 84% gewijzigd door MacWolf op 16-04-2011 18:04 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.


Acties:
  • 0 Henk 'm!

  • t1mmy
  • Registratie: Mei 2006
  • Laatst online: 14-08 16:39
Bedankt voor je reactie!
Misschien heb ik het niet helemaal correct omschreven. Wat ik bedoelde is dat ik de background zet naar die .PNG, en die .PNG heeft transparancy in zich, dit wordt niet mee genomen en gewoon zwart gemaakt.
De manier die je nu aangaf maakt het plaatje voor de helft transparant.

Acties:
  • 0 Henk 'm!

  • MacWolf
  • Registratie: Januari 2004
  • Laatst online: 06-09-2024
Wil je persé de -colorWithPatternImage: methode gebruiken voor het plaatje? Want met de 'gewone' -setBackgroundImage:forState: werkt de transparancy wel goed.

Edit: ik heb al de oplossing, via StackOverflow. Het volgende werkt correct:

C:
1
2
3
4
5
6
7
8
9
[self.view setBackgroundColor:[UIColor purpleColor]];

UIImage *buttonImage = [UIImage imageNamed:@"button.png"];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[button setBackgroundColor:[UIColor colorWithPatternImage:buttonImage]];
//[button.layer setBackgroundColor:[[UIColor clearColor] CGColor]]; waarschijnlijk niet nodig, maar mocht dit wel noodzakelijk zijn, importeer dan het <QuartzCore/QuartzCore.h> framework.
[button setOpaque:YES];
[button setCenter:self.view.center];
[self.view addSubview:button];


Het gaat om de opaque property, die moet aangezet worden om de patternimage correct te tonen als deze transparancy bevat.

[ Voor 83% gewijzigd door MacWolf op 16-04-2011 20:25 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.


Acties:
  • 0 Henk 'm!

  • t1mmy
  • Registratie: Mei 2006
  • Laatst online: 14-08 16:39
In eerste instantie werkt setOpaque inderdaad, jammer genoeg als ik van plaatje switch niet meer. Bedankt voor je reactie! Ga toch voor de manier waarbij ik de achtergrond van de button naar de achtergrond van het onderliggende plaatje photoshop.