Как отобразить индикатор активности в середине экрана iphone?

#iphone #ios #ipad

#iPhone #iOS #iPad

Вопрос:

Когда мы рисуем изображение, мы хотим отобразить индикатор активности. Кто-нибудь может нам помочь?

Комментарии:

1. Попробуйте эту ссылку: jayprakashdubey. blogspot.in/2014/07 /…

Ответ №1:

 UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]     
        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    activityView.center=self.view.center;
    [activityView startAnimating];
    [self.view addSubview:activityView];
  

Комментарии:

1. я бы добавил также activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; для правильного отображения альбомной ориентации и поворота

2. @adsurbum Спасибо! Ключевым моментом было сделать его центрированным на экранах iPhone всех размеров от SE до 8 Plus! В Swift это: ActivityView.autoresizingMask = [ .flexibleLeftMargin, .flexibleTopMargin, .flexibleRightMargin, .flexibleBottomMargin, .flexibleWidth, .flexibleHeight ]

3. 1 к комментарию adsurbum. Установка центра перестала работать в моем приложении недавно. Установка маски автоматического изменения размера исправила это. До этого он всегда отображался в верхнем левом углу, независимо от того, на что я установил .center.

Ответ №2:

Если вы используете Swift, вот как это делается

 let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()

self.view.addSubview(activityView)
  

Ответ №3:

Обновлен код для Swift 3

введите описание изображения здесь

Swift-код

 import UIKit
class ViewController: UIViewController {

    let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

    @IBOutlet weak var myBlueSubview: UIView!

    @IBAction func showButtonTapped(sender: UIButton) {
        activityIndicator.startAnimating()
    }

    @IBAction func hideButtonTapped(sender: UIButton) {
        activityIndicator.stopAnimating()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // set up activity indicator
        activityIndicator.center = CGPoint(x: myBlueSubview.bounds.size.width/2, y: myBlueSubview.bounds.size.height/2)
        activityIndicator.color = UIColor.yellow
        myBlueSubview.addSubview(activityIndicator)
    }
}
  

Примечания

  • Вы можете расположить индикатор активности по центру в середине экрана, добавив его в качестве подвида в корень, view а не myBlueSubview .

     activityIndicator.center =  CGPoint(x: self.view.bounds.size.width/2, y: self.view.bounds.size.height/2)
    self.view.addSubview(activityIndicator)
      
  • Вы также можете создать UIActivityIndicatorView в конструкторе интерфейса. Просто перетащите вид индикатора активности на раскадровку и задайте свойства. Обязательно проверьте, скрывается ли при остановке. Используйте выход для вызова startAnimating() и stopAnimating() . Смотрите это руководство.

введите описание изображения здесь

  • Помните, что по умолчанию LargeWhite стиль имеет белый цвет. Поэтому, если у вас белый фон, вы его не видите, просто измените цвет на черный или любой другой, который вы хотите.

     activityIndicator.color = UIColor.black
      
  • Распространенным вариантом использования было бы выполнение фоновой задачи. Вот пример:

     // start animating before the background task starts
    activityIndicator.startAnimating()
    
    // background task
    DispatchQueue.global(qos: .userInitiated).async {
    
        doSomethingThatTakesALongTime()
    
        // return to the main thread
        DispatchQueue.main.async {
    
            // stop animating now that background task is finished
            self.activityIndicator.stopAnimating()
        }
    }
      

Ответ №4:

Это правильный способ:

 UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.center = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
[self.view addSubview: activityIndicator];

[activityIndicator startAnimating];

[activityIndicator release];
  

Настройте маску автоматического изменения размера, если вы поддерживаете вращение. Приветствия!!!

Ответ №5:

Swift 4, версия автозапуска

 func showActivityIndicator(on parentView: UIView) {
    let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray)
    activityIndicator.startAnimating()
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false

    parentView.addSubview(activityIndicator)

    NSLayoutConstraint.activate([
        activityIndicator.centerXAnchor.constraint(equalTo: parentView.centerXAnchor),
        activityIndicator.centerYAnchor.constraint(equalTo: parentView.centerYAnchor),
    ])
}
  

Комментарии:

1. Добро пожаловать в S / O, ваш ответ никогда не должен быть 100% кодом.. Всегда добавляйте какое-нибудь объяснение.

2. Не уверен, что это черно-белое правило. Если суть вопроса достаточно проста, а код понятен сам по себе, я думаю, что совершенно нормально иметь ответ только в коде. Ответ @ Orkhan точен.

Ответ №6:

Попробуйте этот способ

 UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activityIndicator.frame = CGRectMake(10.0, 0.0, 40.0, 40.0);
    activityIndicator.center = super_view.center;
    [super_view addSubview: activityIndicator];

[activityIndicator startAnimating];
  

Ответ №7:

Если вы хотите добавить текст вместе с индикатором активности, пожалуйста, посмотрите наhttp://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview

Комментарии:

1. Мы ценим вашу общую ссылку, но вы должны объяснить нам шаги, чтобы каждый мог получить ее простым способом.

Ответ №8:

Вы можете установить положение следующим образом

         UIActivityIndicatorView *activityView = 
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityView.frame = CGRectMake(120, 230, 50, 50);
[self.view addSubview:activityView];
  

Соответствующим образом измените размер кадра…..

Ответ №9:

Если вы хотите центрировать счетчик с помощью автозапуска, выполните:

 UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[activityView startAnimating];
[self.view addSubview:activityView];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterX
                                                     multiplier:1.0
                                                       constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:activityView
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];
  

Ответ №10:

Swift 3, xcode 8.1

Вы можете использовать небольшое расширение для размещения UIActivityIndicatorView в центре UIView и унаследованных классов UIView:

Код

 extension UIActivityIndicatorView {

    convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) {
        self.init(activityIndicatorStyle: activityIndicatorStyle)
        center = parentView.center
        self.color = color
        parentView.addSubview(self)
    }
}
  

Как использовать

 let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray,  placeInTheCenterOf: view)
activityIndicator.startAnimating()
  

Полный пример

В этом примере UIActivityIndicatorView размещен в центре представления ViewControllers:

 import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge, color: .gray,  placeInTheCenterOf: view)
        activityIndicator.startAnimating()
    }
}

extension UIActivityIndicatorView {

    convenience init(activityIndicatorStyle: UIActivityIndicatorViewStyle, color: UIColor, placeInTheCenterOf parentView: UIView) {
        self.init(activityIndicatorStyle: activityIndicatorStyle)
        center = parentView.center
        self.color = color
        parentView.addSubview(self)
    }
}
  

Ответ №11:

Для Swift 3 вы можете использовать следующее:

  func setupSpinner(){
    spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 40, height:40))
    spinner.color = UIColor(Colors.Accent)
    self.spinner.center = CGPoint(x:UIScreen.main.bounds.size.width / 2, y:UIScreen.main.bounds.size.height / 2)
    self.view.addSubview(spinner)
    spinner.hidesWhenStopped = true
}
  

Ответ №12:

Надеюсь, это сработает:

 // create activity indicator 
UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] 
    initWithFrame:CGRectMake(0.0f, 0.0f, 20.0f, 20.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];

...
 [self.view addSubview:activityIndicator];
// release it
[activityIndicator release];
  

Ответ №13: