#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];