Ich habe ein interessantes Problem, aber ich bin mir nicht sicher, wie man es löst. Ich versuche, UIView mit einem @IBInspectable zu erweitern. Bei dieser Methode scheint der Eckenradius jedoch von der Standardseite der Nib-Dateien und nicht von der tatsächlichen Größe der Ansicht aus festgelegt zu sein.Rundschreiben UIView Nicht ein voller Kreis
Also, wenn in IB ich den "View as" auf iPhoneSE und Build für iPhoneSE einstellen, ist die Ansicht ein Kreis. Wenn ich jedoch für iPhone7 baue, sind die Ecken nicht vollständig zu einem Kreis gerundet. Umgekehrt, wenn ich "Ansicht als" auf iPhone7 und Build für iPhone7 setze, ist die Ansicht ein Kreis. Wenn ich jedoch für iPhoneSE baue, sind die Ecken übermäßig gerundet.
Bilder und Code unten:
Erweiterung
extension UIView {
@IBInspectable var cornerRadius:Double {
get {
return Double(layer.cornerRadius)
}
set {
layer.cornerRadius = CGFloat(newValue)
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var circleView:Bool {
get {
return layer.cornerRadius == min(self.frame.width, self.frame.height)/CGFloat(2.0) ? true : false
}
set {
if newValue {
layer.cornerRadius = min(self.frame.width, self.frame.height)/CGFloat(2.0)
layer.masksToBounds = true
}
else{
layer.cornerRadius = 0.0
layer.masksToBounds = false
}
}
}
}
"Als" gesetzt, wie iPhoneSE in IB
Gebaut für iPhoneSE
Build for iPhone 7
"Als" gesetzt, wie iPhone7
Build for iPhone SE
Build for iPhone 7
Können Sie bitte Screenshot von Auto-Layout-Einstellungen und Screenshot, wenn Sie Kreisförmige UIView in IB ausgewählt haben? –
@SamuelTulach Diese oben für Sie hinzugefügt. – steventnorris