swift uiview center

Obtener el centro de cualquier UIView en Swift



center (3)

La propiedad del center es relativa a la supervista de una vista. Entonces, si el marco de su vista es {10, 10, 20, 20} , el center será {20, 20} .

Supongo que quieres centrar la activityIndicator a la view .

Tu puedes hacer

activityIndicator.center = CGPointMake(view.width/2, view.height/2)

Intento escribir una función global que agregue un indicador de actividad a cualquier vista (principalmente imageViews) llamando a dicha función.

La función que tengo ahora está hecha de:

public func addActivityIndicatorToView(activityIndicator: UIActivityIndicatorView, view: UIView){ //activityIndicator configuration ... activityIndicator.center = view.center view.addSubview(activityIndicator) activityIndicator.startAnimating() }

Pero no entiendo el centro de la vista por alguna razón.

También probé varias soluciones alrededor de SO y Google, pero ninguna funcionó hasta ahora.

¿Hay alguna forma de obtener el punto central y establecer el indicador de actividad en cualquier UIView?


He reproducido tu problema fácilmente (mira mi comentario). Creo que podría ser un problema de diseño automático. Entonces, ¿puede ser que pueda usar restricciones en lugar de calcular la posición?

func addActivityIndicatorToView(activityIndicator: UIActivityIndicatorView, view: UIView){ self.view.addSubview(activityIndicator) //Don''t forget this line activityIndicator.setTranslatesAutoresizingMaskIntoConstraints(false) view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)) view.addConstraint(NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)) activityIndicator.startAnimating() }

Espero que pueda ayudar.


Swift 3:

activityIndicator.center = CGPoint(x: view.height/2, y: view.width/2)

o puedes probar:

activityIndicator.center = view.center