2013-06-14 17 views
7

Ich verwende XCode 4.6.1 und Entwicklung für iOS 6.Ändern der Größe einer Schaltfläche in iOS programmgesteuert

Ich habe eine Schaltfläche zum Storyboard hinzugefügt. Ich habe einen Auslass in meiner Implementierungsdatei ViewController.m erstellt:

// 
    // ViewController.m 
    // 

    #import "ViewController.h" 

    @interface ViewController() 

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

    @end 

Ich versuche, die Taste b1 ‚s Eigenschaften wie folgt zu ändern (in der gleichen Datei: 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); 
    } 

Als ich das laufen App im Simulator, alpha der Schaltfläche ist erfolgreich auf 0.5 eingestellt. Die Position und Größe der Schaltfläche ändert sich jedoch nicht.

Ich habe verschiedene Möglichkeiten ausprobiert, um es zu ermöglichen. Nichts scheint zu funktionieren. Ich würde gerne wissen, was ich falsch mache. Ich bin ziemlich neu in Objective C. Jede Hilfe würde sehr geschätzt werden.

+0

versuchen Sie, den Rahmen in ViewDidLayoutSubviews anstelle von ViewDidLoad festzulegen. –

Antwort

18

Sie verwenden wahrscheinlich automatischen Layout:

enter image description here

Bei der Verwendung von automatischen Layout nicht manuell Ihre Steckdosen Frames ändern können. Sie haben zwei Möglichkeiten: Sie können entweder deaktivieren automatischen Layout (dann sollten Sie den Code arbeiten) oder Auslässen Ihre Einschränkungen erstellen und dann die Constraints ändern programmatisch:

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

und dann in Ihrem Code:

self.widthConstraint.constant = 123; 

usw. mit allen Einschränkungen, die geändert werden müssen.