2012-03-27 46 views
40

Potrzebuję utworzyć programowo program z obrazem dla normalnego i podświetlonego stanu oraz tekstu. Nie mogę go zbudować za pomocą narzędzia do tworzenia interfejsów, ponieważ muszę utworzyć przyciski ponad UIScrollView. Oto kod, który mam do tej pory:Programowo ustawiony obraz i tekst w UIButtonie

- (void)loadView { 
    CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame]; 
    scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect]; 
    scrollView.contentSize=CGSizeMake(320,960); 

    UIImageView *tempImageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.jpeg"]]; 

    UIImage * buttonImage = [UIImage imageNamed:@"contentlist_active.png"]; 

    self.view=scrollView; 
    [scrollView addSubview:tempImageView2]; 

    btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btn.frame = CGRectMake(22, 100, 277, 32); 

    [btn setImage:buttonImage forState:UIControlStateNormal]; 

    [btn setTitle:@"hello world" forState:UIControlStateNormal]; 
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

    [scrollView addSubview:btn]; 

} 

Ale tekst na przycisku nie wyświetla się. Jeśli skomentuję numer setImage dla button, tekst będzie wyświetlany idealnie, inaczej nie. Czy mogę mieć jednocześnie tekst i obraz?

+0

Czy możesz mi powiedzieć, jak mogę wyrównać tekst, w lewo lub w prawo, jeśli mam na przykład umieścić tekst arabski. –

Odpowiedz

76

UIButtons setImage ustawia obraz powyżej tytułu, dzięki czemu nie będzie widoczny tekst pod nim. Spróbuj ustawić obraz na swoim przycisku za pomocą setBackgroundImage.

Objective-C:

[btn setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

Swift:

myButton.setBackgroundImage(buttonImage, forState: UIControlState.Normal) 
+1

To się udało, dziękuję za dużo :) –

+0

Czy możesz mi powiedzieć, w jaki sposób mogę wyrównać tekst, w lewo lub w prawo, jeśli mam na przykład umieścić tekst arabski. –

+1

[yourButton.titleLabel setTextAlignment: UITextAlignmentLeft]; – iPrabu

4

Czy próbowałeś

[btn setBackgroundImage:buttonImage forState:UIControlStateHighlighted]; 

To może rozwiązać problem.

+0

Tak, zadziałało :) –

22

Zrobiłeś znalazłeś, robisz

[btn setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

zamiast

[btn setImage:buttonImage forState:UIControlStateNormal]; 

To będzie działać prawidłowo.

+0

Tak, moje złe, dzięki :) –

0
 var menuButton:UIButton? 

    override func viewWillAppear(animated: Bool) { 
    menuButton = UIButton(frame: CGRectMake(0,0,30,30)) 
     menuButton?.setBackgroundImage(UIImage(named: "menu.png"), forState: UIControlState.Normal) 

    } 
Powiązane problemy