Mam okrąg na środku ekranu z ograniczeniem marginesu 50
na jednym z końców. Dlatego szerokość koła zależy od wielkości ekranu.Uzyskiwanie wysokości widoku w oparciu o ograniczenia marginesów po uruchomieniu Swift
Więc, co starałem się następująco:
Approach 1
skonfigurować marginesy w serii ujęć, aby określić szerokość koła (50
na lewy i prawy)
Potem używany następujący kod:
@IBOutlet weak var helpButHeight: NSLayoutConstraint!
@IBOutlet weak var helpBut: UIButton!
viewDidLoad:
helpButHeight.constant = helpBut.frame.size.width
To nie działało.
Ponieważ szerokość ekranu jest 400
, a marża jest 50
na obu końcach, a następnie helpBut.frame.size.width
powinien dać mi 300
.
Zamiast tego dała mi 46
.
Podejście 2
To był mój obejście:
viewDidLoad:
let screenSize: CGRect = UIScreen.mainScreen().bounds
helpButHeight.constant = screenSize.width - 100
ponieważ 100 = 50 + 50
, dwa marginesy.
Działa dobrze!
Pytanie
Dlaczego mam to zrobić? Dlaczego pierwsze podejście nie działa? Dlaczego 46
, a nie 300
?
Czy robisz to 'helpButHeight.constant = helpBut.frame.size.width' w swoim' viewDidLoad'? –
Tak, przepraszam, wyjaśnię to. –
Co nie wystarczy ustawić Proporcje proporcji na 1: 1, a następnie ustawić ograniczenia wiodące i końcowe na 50, a można wyśrodkować w pionie? – EridB