Я бы добавил также activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin; для правильной
горизонтальной
@adsurbum Спасибо! Это было ключом к тому, чтобы его можно было сосредоточить на экранах iPhone всех размеров от SE до 8 Plus! В Swift это: activityView.autoresizingMask = [.f flexibleLeftMargin, .f flexibleTopMargin, .f flexibleRightMargin, .f flexibleBottomMargin, .f flexibleWidth, .f flexibleHeight]
balazs630
43
Если вы используете Swift, вот как вы это делаете
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
activityView.center = self.view.center
activityView.startAnimating()
self.view.addSubview(activityView)
Вы также можете создать UIActivityIndicatorViewв Интерфейсном Разработчике. Просто перетащите представление индикатора активности на раскадровку и установите свойства. Обязательно установите флажок Скрывается при остановке . Используйте розетку, чтобы позвонить startAnimating()и stopAnimating(). См. Этот учебник .
Помните, что цвет LargeWhiteстиля по умолчанию - белый. Поэтому, если у вас белый фон, вы его не видите, просто измените цвет на черный или любой другой цвет, который вы хотите.
activityIndicator.color = UIColor.black
Обычный вариант использования - когда выполняется фоновая задача. Вот пример:
// start animating before the background task startsactivityIndicator.startAnimating()
// background taskDispatchQueue.global(qos: .userInitiated).async {
doSomethingThatTakesALongTime()
// return to the main threadDispatchQueue.main.async {
// stop animating now that background task is finishedself.activityIndicator.stopAnimating()
}
}
Добро пожаловать в S / O, ваш ответ никогда не должен состоять из 100% кода. Всегда добавляйте пояснения.
Таслим Осени
Не уверен, что это правило черного и белого. Если объем вопроса достаточно прост, а код не требует пояснений, я думаю, что вполне нормально иметь ответ, состоящий только из кода. @ Орхан ответил точно.
• Если вы хотите попробовать сделать это с помощью интерфейса, вы можете просмотреть мое видео для этого . Таким образом, вам не нужно писать какой-либо код для отображения индикатора активности в середине экрана iPhone.
Ответы:
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; activityView.center=self.view.center; [activityView startAnimating]; [self.view addSubview:activityView];
источник
activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
для правильнойЕсли вы используете Swift, вот как вы это делаете
let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge) activityView.center = self.view.center activityView.startAnimating() self.view.addSubview(activityView)
источник
Код обновлен для 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() } }
источник
Это правильный способ:
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];
Настройте маску с автоизменением размеров, если вы поддерживаете вращение. Ура !!!
источник
Попробуйте так
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];
источник
Если вы хотите добавить текст вместе с индикатором активности, посмотрите http://nullpointr.wordpress.com/2012/02/27/ios-dev-custom-activityindicatorview/
источник
Swift 4, версия Autolayout
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), ]) }
источник
Вы можете установить такую позицию
UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; activityView.frame = CGRectMake(120, 230, 50, 50); [self.view addSubview:activityView];
Соответственно измените размер кадра .....
источник
Если вы хотите центрировать счетчик с помощью AutoLayout, выполните:
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]];
источник
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) } }
источник
Для 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 }
источник
Надеюсь, это сработает:
// 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];
источник
• Если вы хотите попробовать сделать это с помощью интерфейса, вы можете просмотреть мое видео для этого . Таким образом, вам не нужно писать какой-либо код для отображения индикатора активности в середине экрана iPhone.
источник
import UIKit class ViewController: UIViewController { @IBOutlet weak var textLbl: UILabel! var containerView = UIView() var loadingView = UIView() var activityIndicator = UIActivityIndicatorView() override func viewDidLoad() { super.viewDidLoad() let _ = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { (_) in self.textLbl.text = "Stop ActivitiIndicator" self.activityIndicator.stopAnimating() self.containerView.removeFromSuperview() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func palyClicked(sender: AnyObject){ containerView.frame = self.view.frame containerView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.3) self.view.addSubview(containerView) loadingView.frame = CGRect(x: 0, y: 0, width: 80, height: 80) loadingView.center = self.view.center loadingView.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.5) loadingView.clipsToBounds = true loadingView.layer.cornerRadius = 10 containerView.addSubview(loadingView) activityIndicator.frame = CGRect(x: 0, y: 0, width: 40, height: 40) activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.whiteLarge activityIndicator.center = CGPoint(x:loadingView.frame.size.width / 2, y:loadingView.frame.size.height / 2); activityIndicator.startAnimating() loadingView.addSubview(activityIndicator) } }
источник
Я нашел способ отображать индикатор активности с минимальным кодом:
прежде всего импортируйте свой UI Kit
import UIKit;
Затем вам нужно активировать индикатор активности
let activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView();
Затем просто скопируйте и вставьте эти функции ниже, которые не требуют пояснений, и вызывайте их, когда они вам нужны:
func startLoading(){ activityIndicator.center = self.view.center; activityIndicator.hidesWhenStopped = true; activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray; view.addSubview(activityIndicator); activityIndicator.startAnimating(); UIApplication.shared.beginIgnoringInteractionEvents(); } func stopLoading(){ activityIndicator.stopAnimating(); UIApplication.shared.endIgnoringInteractionEvents(); }
источник