2013-06-14 15 views
7

Używam XCode 4.6.1 i rozwijam dla iOS 6.Zmiana rozmiaru przycisku w iOS programowo

Dodałem przycisk do scenopisu. Stworzyłem ujście w moim pliku implementacji ViewController.m:

// 
    // ViewController.m 
    // 

    #import "ViewController.h" 

    @interface ViewController() 

    @property (weak, nonatomic) IBOutlet UIButton *b1; 

    @end 

próbuję zmienić właściwości przycisk b1 „s w następujący sposób (w tym samym pliku: ViewController.m):

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view, typically from a nib. 

     self.b1.alpha = 0.5; 
     self.b1.frame = CGRectMake(0,0,123,412); 
    } 

gdy uruchomię Aplikacja w symulatorze, alpha przycisku jest z powodzeniem ustawiona na 0.5. Jednak pozycja i rozmiar przycisku nie zmieniają się.

Próbowałem różnych sposobów, aby to się stało. Jednak nic nie działa. Chciałbym wiedzieć, co robię źle. Jestem całkiem nowy w Objective C. Każda pomoc byłaby bardzo doceniana.

+0

Spróbuj ustawić ramkę w viewDidLayoutSubviews zamiast viewDidLoad. –

Odpowiedz

18

Prawdopodobnie używasz autolayout:

enter image description here

Podczas korzystania autolayout nie można ręcznie zmienić swoje wyloty ramek. Masz dwie opcje: możesz albo wyłączyć autolayout (wtedy Twój kod powinien działać), lub tworzyć wyloty do swoich ograniczeń i następnie zmodyfikować ogranicza programowo:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *widthConstraint; 

, a następnie w kodzie:

self.widthConstraint.constant = 123; 

itd. Ze wszystkimi ograniczeniami, które należy zmodyfikować.