2010-09-16 10 views

Odpowiedz

66

Kompletny kod:

+ (UIButton *)buttonWithTitle:(NSString *)title 
         target:(id)target 
        selector:(SEL)selector 
         frame:(CGRect)frame 
         image:(UIImage *)image 
       imagePressed:(UIImage *)imagePressed 
       darkTextColor:(BOOL)darkTextColor 
    { 
    UIButton *button = [[UIButton alloc] initWithFrame:frame]; 

    button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 

    [button setTitle:title forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 


    UIImage *newImage = [image stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0]; 
    [button setBackgroundImage:newImage forState:UIControlStateNormal]; 

    UIImage *newPressedImage = [imagePressed stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0]; 
    [button setBackgroundImage:newPressedImage forState:UIControlStateHighlighted]; 

    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; 

    // in case the parent view draws with a custom color or gradient, use a transparent color 
    button.backgroundColor = [UIColor clearColor]; 

    return button; 
} 

UIImage *buttonBackground = UIImage imageNamed:@"whiteButton.png"; 
UIImage *buttonBackgroundPressed = UIImage imageNamed:@"blueButton.png"; 

CGRect frame = CGRectMake(0.0, 0.0, kStdButtonWidth, kStdButtonHeight); 

UIButton *button = [FinishedStatsView buttonWithTitle:title 
               target:target 
              selector:action 
               frame:frame 
               image:buttonBackground 
             imagePressed:buttonBackgroundPressed 
             darkTextColor:YES]; 

[self addSubview:button]; 

Aby ustawić obraz:

UIImage *buttonImage = [UIImage imageNamed:@"Home.png"]; 
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[self.view addSubview:myButton]; 

Aby usunąć zdjęcie:

[button setBackgroundImage:nil forState:UIControlStateNormal] 
+0

Dlaczego tworzysz kopię obrazu przed ustawieniem BG przycisku dla tego obrazu? Czy nie ryzykujemy wyciekami pamięci lub nietypowym zachowaniem, jeśli tego nie robimy, lub czy po prostu pozwala się rozciągać obrazy w celu wypełnienia ich przycisków? – Kevin

5

W przypadku pomaga ktoś setBackgroundImage nie działa dla mnie , ale setImage zrobił

+0

z ustawiam Obrazek ustawia obraz na pierwszym planie ... jeśli chcesz ustawić obraz tła użyj setBackgroundImage: <# (UIImage *) #> forState: <# (UIControlState) #> – redestructa

16

To zadziała

UIImage *buttonImage = [UIImage imageNamed:@"imageName.png"]; 
[btn setImage:buttonImage forState:UIControlStateNormal]; 
[self.view addSubview:btn]; 
+0

to nie jest tło .. –

3

Można ustawić obraz tła bez kodu!

Wystarczy nacisnąć przycisk, który ma obraz w Main.storyboard, a następnie, w użyteczności bar w prawo, naciśnij inspektor i ustawić tło do obrazu, który chcesz atrybuty! Upewnij się, że obraz, który chcesz, znajduje się po lewej stronie w plikach pomocniczych .

2

Podczas ustawiania obrazu w komórce tabeli lub widoku kolekcji, to pracował dla mnie:

Umieść następujący kod w swoim „cellForRowAtIndexPath” lub „cellForItemAtIndexPath”

// Uzyskanie wskaźnika do komórki. Odpowiedź zakłada, że ​​to zrobiłeś, ale tutaj dla kompletności.

CheeseCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cheeseCell" forIndexPath:indexPath]; 

// Chwyć obraz z biblioteki dokumentów i ustaw go w komórce.

UIImage *myCheese = [UIImage imageNamed:@"swissCheese.png"]; 
[cell.cheeseThumbnail setImage:myCheese forState:UIControlStateNormal]; 

* UWAGA: Xcode wydawało się rozłączyła się to dla mnie. Musiałem zrestartować zarówno xCode, jak i Simulator, działało to poprawnie.

ta zakłada, że ​​masz cheeseThumbnail skonfigurować jako IBOutlet ... i kilka innych rzeczy ... mam nadzieję, że jesteś na tyle obeznany z widokiem na stół/zbiórki i zmieści się to w.

Nadzieja ta pomaga.

2

Swift

przycisk Ustaw obraz tak:

let myImage = UIImage(named: "myImageName") 
myButton.setImage(myImage , forState: UIControlState.Normal) 

gdzie myImageName to nazwa obrazu w katalogu aktywów.

0

w jednej linii możemy ustawić obraz z tym kodem

[buttonName setBackgroundImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal]; 
0

Code dla obrazu tła guzika w Swift 3,0

  • buttonName.setBackgroundImage(UIImage(named: "facebook.png"), for: .normal) nadzieję, że pomoże ktoś.
Powiązane problemy