2016-04-16 11 views
0

kann mir bitte jemand mit meinem Problem helfen.Xcode 7 Swift 2 Objektgröße zur Laufzeit

Ich habe einen Viewcontroller. Ich habe gerade ein "View" -Objekt hinzugefügt und die Breite des "View" -Objekts auf die Bildschirmbreite festgelegt, die zur Laufzeit und Designgröße derzeit bei 320 (iPhone 4s) angezeigt wird. Wenn ich jedoch zur Laufzeit die Breite des "Ansicht" -Objekts überprüfe, wird 240 angezeigt. Die Eigenschaft width des Objekts "Ansicht" im Entwurfsmodus zeigt mir 320 an. Ich möchte, dass sich mein Objekt "Ansicht" automatisch an den Bildschirm anpasst Die Breite hängt vom verwendeten iPhone ab. Wenn ich das zum Beispiel auf einem iPhone 6 simuliere, ist die Bildschirmbreite 375, aber die "Ansicht" zeigt immer noch 240 an. Das gleiche gilt für die Höhe.

Das gleiche für die Höhe. Im Entwurfsmodus zeigt mir die Höhe 284, aber zur Laufzeit zeigt es mir 128.

Ich habe eine Schaltfläche in der "View" -Objekt mit einer Größe von 80 x 80, aber zur Laufzeit zeigt es mir 46 x 30.

Hier sind meine "Ansicht" Einstellungen:

View Object Height Constraints

View Object Vertical Constraints

für My Code, um die Breite der "Ansicht" immer unter:

@IBOutlet weak var gameSpace: UIView! 
    var gsWidth: CGFloat = 0 
    var gsHeight: CGFloat = 0 

    let gsSize: CGRect = gameSpace.bounds 
    gsWidth = gsSize.width 
    gsHeight = gsSize.height 

Für die Schaltfläche ...

@IBOutlet weak var tapBtn: UIButton! 
    let buttonSize: CGRect = tapBtn.bounds 
    tapBtnWidth = buttonSize.width 
    tapBtnHeight = buttonSize.height 

wird Ihre Hilfe/Anregung sehr geschätzt werden. Vielen Dank im Voraus.

+0

Was sind Ihre widthbezogenen Beschränkungen von View? – slxl

+0

Die Breite beträgt 320 für die Ansicht? Gleiche Breiteneinschränkungen: Konstante 0, Priorität 1000, Multiplikator 1 – Coolboylp

Antwort

1

Was tatsächlich dort sein könnte ist, dass Sie Dimension-bezogene Eigenschaften zuweisen, bevor Auto-Layout seinen Job gemacht hat und dann weiterhin falsche Werte verwendet.

, wenn Sie einige Werte zu aktualisieren, die auf Auto-Layout-abhängig - es ist besser, dass hier zu tun:

override func viewDidLayoutSubviews() { 
     // Update your values there 
} 

Wenn Auto-Layout-Engine Finish all seinen Job. Beachten Sie auch, dass diese Funktion während des Lebenszyklus der Ansicht möglicherweise mehrmals aufgerufen wird.

+0

Wo ist diese Funktion? Entschuldige, dass Xcode neu ist. – Coolboylp

+0

@Coolboylp Sie müssen dies zu Ihrem View-Controller hinzufügen und es wird automatisch jedes Mal direkt nach "view did Layout-Subviews" aufgerufen – slxl

+0

Danke. Ich werde es versuchen. – Coolboylp

Verwandte Themen