Ich brauche 5 Tasten Layout wie in diesem Bild: proportionale Größenanpassung von Schaltflächen in UIStackView
Ich brauche sie auf verschiedenen Geräten proportional zu ändern.
Ich habe diesen Code in einer Methode, die eine Ansicht mit 5 Tasten erstellt.
UIStackView *stackView = [[UIStackView alloc]init];
// Add buttons to stackView (buttons are initialised)
[stackView addArrangedSubview:_button1];
[stackView addArrangedSubview:_button2];
[stackView addArrangedSubview:_button3];
[stackView addArrangedSubview:_button4];
[stackView addArrangedSubview:_button5];
stackView.translatesAutoresizingMaskIntoConstraints = false;
[self.view addSubview:stackView];
stackView.axis = UILayoutConstraintAxisVertical;
stackView.distribution = UIStackViewDistributionFillEqually;
stackView.spacing = 5;
//Layout Constraints for stackView
[stackView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = true;
[stackView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = true;
// 80% of screen height should be used for buttons
CGFloat screenHeightAvailableForButtons = 80/100;
// Calculate multiplier for height of the buttons (5 buttons)
CGFloat buttonMultiplier = screenHeightAvailableForButtons /5;
// 25% of screen width should be used for buttons
CGFloat screenWidthMultiplier = 25/100;
[_button1.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier].active = true;
[_button1.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;
[_button2.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button2.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;
[_button3.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button3.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;
[_button4.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button4.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;
[_button5.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier: screenWidthMultiplier ].active = true;
[_button5.heightAnchor constraintEqualToAnchor: self.view.heightAnchor multiplier: buttonMultiplier].active = true;
Dieser Code gibt eine leere Ansicht zurück. Benutze ich die Methoden falsch?
Ich kann nicht herausfinden, was ich falsch mache. Ich brauche das programmatisch in Ziel c.
dank
Bitte näher auf die „Ich brauche sie proportional auf verschiedenen Geräten zu ändern.“. Wie "wenn die Höhe der Stapelansicht xxx ist, sind die Schaltflächen xx, dann sollte die Höhe der Schaltfläche xxx sein" und ähnlich wie die Breite. – BangOperator
@BangOperator Ich brauche es aussehen wie es ist in dem bereitgestellten Bild 'auf allen Geräten' und ich muss es programmatisch nicht in IB tun. Also, im Querformat, stackView.height = screen.height minus 20 Punkte von oben und unten, button.height = 1/5 von stackView mit 5 Punkt Abstand zwischen den einzelnen Schaltflächen. Und stackView.width = 1/4 der Bildschirmbreite und 20 Punkte vom linken Rand entfernt, button.width = stackView.width. Hoffe das macht Sinn – sharp