2015-02-19 47 views

Antwort

15

Versuchen:

let size = 260 
let screenWidth = self.view.frame.size.width 

let frame = CGRectMake((screenWidth/2) - (size/2), 30, size, size) 
let draggableView = DraggableView(frame: frame) 

self.view.addSubview(draggableView) 
10

Sie nicht eine Ansicht in einem View-Controller-Zentrum kann, da ein View-Controller nicht eine Ansicht ist und nicht über ein System koordinieren.

Sie können eine Ansicht relativ zu einer anderen Ansicht zentrieren. Vermutlich möchten Sie draggableView relativ zur Sicht des View-Controllers zentrieren. Unter der Annahme, self ist die View-Controller und draggableView wird ein direkter Subview nach Ansicht des View-Controller sein:

var draggableView: DraggableView = DraggableView(frame:CGRectMake(0 , 30, 260, 260)) 
self.view.addSubview(draggableView) 
draggableView.center = self.view.center 
3

Obwohl Rob Mayoff korrekt ist, könnte es sinnvoll sein zu prüfen, den Rahmen in viewWillLayoutSubviews Zentrierung, die aufgerufen wird, bei Gerätedrehung. Sie können auch die Eigenschaften center.x und center.y der Mitte verwenden, um basierend auf der Achse auszurichten. In diesem Fall muss man sich nicht selbst nennen.

override func viewWillLayoutSubviews() { 
    draggableView.center = view.center 
} 
0

Dies ist eine nette kleine Erweiterung für eine Ansicht oder Objekt Zentrierung:

extension CGPoint { 
    static var Center: CGPoint { 
     return CGPoint(x: UIScreen.main.bounds.maxX/2, y: UIScreen.main.bounds.maxY/2) 
    } 
} 

Und es dann wie folgt verwenden:

textField.center = CGPoint.Center 
0

activityindicater der Ansicht ist, die Sie setzen wollen in der Mitte

self.activityindicater.center = self.baseView.center

14

Swift 3;

subView.center.x = view.center.x 
+1

Dies sollte die akzeptierte Antwort. Einfach und sauber. –

+0

true dies sollte die akzeptierte antwort sein. –

1

Ich bin mit der ‚MMMaterialDesignSpinner‘ Bibliothek und eine benutzerdefinierte Aktivitätsanzeige in der Mitte der Ansicht erstellen. Es funktioniert korrekt, Sie können Ihren benutzerdefinierten Ansichtsnamen wie "DraggableView" ändern. Ich hoffe, es ist für dich nutzbar. Dieser Code wird hinzugefügt in die viewDidLoad Funktion in swift 3.

var loader = MMMaterialDesignSpinner() 
let size:CGFloat = 40.0 
let screenWidth = self.view.frame.size.width 
let screenHeight = self.view.frame.size.height 

loader = MMMaterialDesignSpinner(frame: CGRect(x: (screenWidth/2) - (size/2), y: (screenHeight/2) - (size/2), width: size, height: size)) 

loader.tintColor = UIColor.blue 
loader.lineWidth = 4.0 
loader.lineCap = kCALineCapRound; 
view.addSubview(loader) 
0

Swift 3:

// in view controller, in viewDidLoad function 
let draggableView = DraggableView(frame: CGRect(x: 0, y: 30, width: 260, height: 260))  
draggableView.frame.origin.x = view.bounds.midX - draggableView.bounds.midX 
Verwandte Themen