rotacion razon quitar proveedores por pagar operacional los inventarios interpretacion indicadores indicador fijos cuentas correo como ciclo analizar activos actividad ios autolayout uiactivityindicatorview

ios - razon - rotacion de cuentas por pagar



¿Cómo colocar el indicador de actividad en el centro de su supervisión con Programación automática? (4)

Centré mi indicador de actividad en su supervisión, agregándolo en Interface Builder con un alfa de cero (y un IBOutlet para él en mi clase de controlador de vista). Luego agregué restricciones para centrarlo en los ejes X e Y. Finalmente, le agregué restricciones de ancho y altura para silenciar un error de reproducción automática.

En mi vista, el método startActivityIndicator del controlador, configuré el alfa del indicador de actividad en uno y llamé al método startAnimating. En mi método stopActivityIndicator, llamo al método stopAnimating y pongo el alfa del indicador de actividad a cero.

Por qué el siguiente código no funciona para posicionar el indicador de actividad en el centro de su supervisión:

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; [self.mysuperview addSubview:activityIndicator]; [activityIndicator addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-(>=20)-[view(==100)]-(>=20)-|" options:NSLayoutFormatAlignAllCenterX | NSLayoutFormatAlignAllCenterY metrics:nil views:@{@"view" : self.mysuperview}]];

El indicador de actividad está ubicado en algún lugar en la esquina superior izquierda, definitivamente no en el centro.

================== Actualización: SOLUCIÓN ENCONTRADA: Tengo que desactivar las restricciones de tamaño automático después de crear el indicador y luego todas las soluciones que funcionaron:

[activityIndicator setTranslatesAutoresizingMaskIntoConstraints:NO];

Lo encontré en el enlace dado por @Vignesh, así que acepto su respuesta.


Está cumpliendo con sus requisitos al estar en la esquina, ya que no está diciendo que las brechas en cada lado tienen que ser iguales. Intenta esto en su lugar:

[self.superview addConstraint:[NSLayoutConstraint constraintWithItem:activityIndicator attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.superview attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];

Y para centrarlo verticalmente haz esto también:

[self.superview addConstraint:[NSLayoutConstraint constraintWithItem:activityIndicator attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.superview attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];

Alternativamente, recomiendo usar el proyecto FLKAutoLayout para simplificar todo esto:

github.com/dkduck/FLKAutoLayout

Entonces puedes hacer:

[activityIndicator alignCenterXWithView:self.superview predicate:nil]; [activityIndicator alignCenterYWithView:self.superview predicate:nil];

Lo cual es bueno :)


Los siguientes cuatro ejemplos de código de Swift 3 muestran cómo centrar un UIActivityIndicatorView en el UIView de un UIViewController con diseño automático .

Todas las muestras producen el mismo resultado pero, según sus necesidades y gustos, puede elegir uno u otro.

Si la vista de UIActivityIndicatorView de UIActivityIndicatorView no es una self.view , simplemente tiene que reemplazar cada llamada de self.view uno self.view con su propia vista de superview (sin superview ).

1. NSLayoutConstraint style

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray) indicatorView.isHidden = false indicatorView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(indicatorView) // Auto layout let horizontalConstraint = NSLayoutConstraint(item: indicatorView, attribute: .centerX, relatedBy: .equal, toItem: self.view, attribute: .centerX, multiplier: 1, constant: 0) let verticalConstraint = NSLayoutConstraint(item: indicatorView, attribute: .centerY, relatedBy: .equal, toItem: self.view, attribute: .centerY, multiplier: 1, constant: 0) NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint]) /* // You can replace NSLayoutConstraint activate(_:) call with the following lines: self.view.addConstraint(horizontalConstraint) self.view.addConstraint(verticalConstraint) */ } }

2. UIViewAutoresizing estilo

Los resortes y puntales se traducirán en las restricciones de diseño automático correspondientes en el tiempo de ejecución.

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray) indicatorView.isHidden = false indicatorView.translatesAutoresizingMaskIntoConstraints = true // default is true self.view.addSubview(indicatorView) // Springs and struts indicatorView.center = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.midY) indicatorView.autoresizingMask = [ .flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin ] } }

3. Estilo de lenguaje de formato visual

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray) indicatorView.isHidden = false indicatorView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(indicatorView) // Auto layout let views: [String: Any] = ["superview": self.view, "indicatorView": indicatorView] let horizontalConstraints = NSLayoutConstraint .constraints(withVisualFormat: "H:[superview]-(<=0)-[indicatorView]", options: .alignAllCenterY, metrics: nil, views: views) let verticalConstraints = NSLayoutConstraint .constraints(withVisualFormat: "V:[superview]-(<=0)-[indicatorView]", options: .alignAllCenterX, metrics: nil, views: views) self.view.addConstraints(horizontalConstraints) self.view.addConstraints(verticalConstraints) } }

4. Estilo NSLayoutAnchor (requiere iOS 9)

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray) indicatorView.isHidden = false indicatorView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(indicatorView) // Auto layout let horizontalConstraint = indicatorView .centerXAnchor.constraint(equalTo: self.view.centerXAnchor) let verticalConstraint = indicatorView .centerYAnchor.constraint(equalTo: self.view.centerYAnchor) NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint]) /* // You can replace NSLayoutConstraint activate(_:) call with the following lines: self.view.addConstraint(horizontalConstraint) self.view.addConstraint(verticalConstraint) */ } }


Puedes probar esto,

UIView *superview = self.mysuperview; NSDictionary *variables = NSDictionaryOfVariableBindings(activityIndicator, superview); NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[superview]-(<=1)-[activityIndicator]" options: NSLayoutFormatAlignAllCenterX metrics:nil views:variables]; [self.view addConstraints:constraints]; constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[superview]-(<=1)-[activityIndicator]" options: NSLayoutFormatAlignAllCenterY metrics:nil views:variables]; [self.view addConstraints:constraints];

Tomado de here .