2017-11-24 3 views
1

Ich möchte eine andere UIView/UIButton auf einem UIButton erstellen, so bekomme ich seinen Rahmen und verwende es in der Deklaration eines anderen UIView, aber es erstellt wie unten Screenshot (mit blauer Sicht). Der Button wird übrigens auf dem Storyboard erstellt.Kopieren von UIButtons Frame gibt falsche Position

Ich verwende Xcode 9.1 und iOS 11,1

- (void)viewDidLoad { 

    UIView *picker = [[UIView alloc] initWithFrame:_mButton.frame]; 
    picker.backgroundColor=[UIColor blueColor]; 
    [self.view addSubview: picker]; 
} 

Screenshot 1 Screnshot 2

Antwort

0

Ich denke, die richtigen Rahmen nicht in viewDidLoad berechnet. Sie können versuchen, picker eine Eigenschaft zu machen und seinen Rahmen

@property (strong, nonatomic) UIView *picker; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.picker = [[UIView alloc] initWithFrame:_mButton.frame]; 
    self.picker.backgroundColor=[UIColor blueColor]; 
    [self.view addSubview: self.picker]; 
} 

- (void)viewDidLayoutSubviews { 
    self.picker.frame = _mButton.frame; 
    [super viewDidLayoutSubviews]; 
} 

in viewDidLayoutSubviews einstellen Aber vom Kurs abgekommen Storyboard und automatisches Layout verwenden würde wahrscheinlich die beste sollution sein, wenn Sie diese Möglichkeit haben.

+0

Gibt mir immer noch falsche Position. –

+0

verwenden Sie die Grenzen, um den Rahmen zu setzen? Wenn Sie dies tun: self.picker.frame = _mButton.frame wird der Rahmen wahrscheinlich nicht korrekt sein, da die Position der Schaltflächen nicht bei x = 0 und y = 0 ist. – knutigro

+0

Kann ich es einfach auf ViewWillAppear aufrufen? Ich denke, das wird die Lösung sein, aber es funktioniert auch nicht. –

Verwandte Themen