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