Ich habe meine App in Xcode mit iPhone SE-Ansicht angelegt. Die Schaltflächen usw. erscheinen alle unter Test, wie sie sollten.Warum werden diese Schaltflächen in größeren Geräten nicht korrekt angezeigt? (Swift)
Allerdings, wenn ich auf einem großen Bildschirm, d. H. IPhone 7 testen ein paar seltsame Dinge passieren.
1) Schaltflächen umarmen die rechte Seite, obwohl ich die Zwänge von Margen
Und zweitens, eine der Gradient, die ich meine Tasten angewendet haben scheint Stopp 3/4 über die Schaltfläche in diesem Fall:
Es ist der gleiche Code in jedem Fall aufgerufen wird von die Tasten:
let orangeGradient = CAGradientLayer().orangeButtonColor()
orangeGradient.frame = self.joinCommunityButton.bounds
self.joinCommunityButton.layer.insertSublayer(orangeGradient, at: 0)
extension CAGradientLayer {
func bespokeColor() -> CAGradientLayer {
let topColor = UIColor(red: (46/255.0), green: (63/255.0),blue: (81/255.0), alpha: 1)
let bottomColor = UIColor(red: (22/255.0), green: (31/255.0),blue: (41/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations as [NSNumber]?
return gradientLayer
}
func orangeButtonColor() -> CAGradientLayer {
let topColor = UIColor(red: (211/255.0), green: (115/255.0),blue: (28/255.0), alpha: 1)
let bottomColor = UIColor(red: (171/255.0), green: (80/255.0),blue: (14/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations as [NSNumber]?
return gradientLayer
}
func purpleButtonColor() -> CAGradientLayer {
let topColor = UIColor(red: (112/255.0), green: (41/255.0),blue: (183/255.0), alpha: 1)
let bottomColor = UIColor(red: (85/255.0), green: (19/255.0),blue: (159/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations as [NSNumber]?
return gradientLayer
}
func greenButtonColor() -> CAGradientLayer {
let topColor = UIColor(red: (35/255.0), green: (193/255.0),blue: (67/255.0), alpha: 1)
let bottomColor = UIColor(red: (31/255.0), green: (148/255.0),blue: (53/255.0), alpha: 1)
let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]
let gradientLocations: [Float] = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations as [NSNumber]?
return gradientLayer
}
}
Hier ist ein Screenshot von dem, was ich glaube, sind die Auto-Layout-Einstellungen:
Wo wenden Sie die Farbverlaufsschicht auf die Schaltflächen an? Ist autoLayout wirksam? Stellen Sie sicher, dass Sie GradientLayers in 'viewDidAppear' hinzufügen ** oder ** Gradienten in' viewDidLoad' definieren und die Grenzen des Layers in 'viewDidLayoutSubviews' ändern. – Rikh
Ja, ich habe die ersten 3 Zeilen dieses Codes (vor der Erweiterung) in viewDidLoad – RDowns