Страницы

Поиск по вопросам

Показаны сообщения с ярлыком loading. Показать все сообщения
Показаны сообщения с ярлыком loading. Показать все сообщения

воскресенье, 9 февраля 2020 г.

Реализация псевдозагрузки

#python #python_3x #loading


Не бейте за данный код, это как пример. Подскажите как можно реализовать данную псевдозагрузку?
Не прошу готового кода, просто небольшая подсказка пойдёт

from time import *
from os import *
import random
per = 0.2
to = 0.5

def load():
    print("[..........]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[#.........]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[##........]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[###.......]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[####......]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[#####.....]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[#####.....]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[######....]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[#######...]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[########..]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[#########.]")
    sleep(random.uniform(per, to))
    system("clear")
    print("[##########]")
    sleep(random.uniform(per, to))
    print("LOADED")
    sleep(3)

    


Ответы

Ответ 1



from time import * from os import * import random per = 0.2 to = 0.5 pbar_len = 10 def load(): for i in range(pbar_len+1): pbar = "#"*i + "."*(pbar_len-i) print("[" + pbar + "]") sleep(random.uniform(per, to)) system("clear") print("LOADED")

Ответ 2



Как минимум можете использовать цикл для такого ... print("[######....]") sleep(random.uniform(per, to)) ...

Ответ 3



def load(per=0.2, to=0.5): for i in range(10): system('clear') print('[' + '#' * i + '.' * (9 - i) + ']') sleep(random.uniform(per, to))

суббота, 8 февраля 2020 г.

swift ios как запустить анимацию во время вычислений

#ios #swift #loading


Со свифтом знакома меньше недели, так что извиняюсь, если вопрос слишком глупый,
но дело вот какое:

У меня есть контроллер, в котором я ввожу данные, клацаю на кнопку и перехожу к другому
контроллеру, в котором производятся вычисления и выводятся на экран. Все вычисления
прописаны во viewDidLoad второго контроллера, и если введенное значение слишком большое,
то они занимают много времени. И все это время экран зависает на первом контроллере.

Я хочу сделать так, чтобы пока производятся вычисления на экране была гифка, но вышло
так, что сначала все считается, потом включается гифка и тут же переход. (subView я
пробовала добавлять и в функцию кнопки и в функцию ShouldPerformSegue)
    


Ответы

Ответ 1



В методе viewDidLoad вам нужно выполнять вычисления в бекграунд потоке, а пока все это вычисляется, показывать анимацию, и как только все вычисления будут закончены, в completion блоке останавливать анимацию.

Ответ 2



Как уже было сказано, вам надо выполнять код на отдельном потоке. Скорее всего в результате вычислений сделанных в отдельном потоке, вам надо будет делать апдейт информации на экране. Помните, что это обязательно делать на mainThread, то есть после вычислений вам надо указать в программе, что вы хотите выполнить какой то код в основном потоке. Приведу несколько примеров как это сделать: dispatch_async(dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) { () -> Void in //код, который надо выполнить асинхронно здесь dispatch_sync(dispatch_get_main_queue(), { () -> Void in //код, который должен выполниться в главном потоке }) } или override func viewDidLoad() { super.viewDidLoad() self.performSelectorInBackground(Selector("backgroundTask"), withObject: nil) } func backgroundTask () { //код, который надо выполнить асинхронно здесь self.performSelectorOnMainThread(Selector("anotherSelector"), withObject: nil, waitUntilDone: false) } или let opQueue: NSOperationQueue = NSOperationQueue() opQueue .addOperationWithBlock { () -> Void in //код, который надо выполнить асинхронно здесь NSOperationQueue.mainQueue() .addOperationWithBlock({ () -> Void in //код, который должен выполниться в главном потоке }) }

пятница, 12 апреля 2019 г.

swift ios как запустить анимацию во время вычислений

Со свифтом знакома меньше недели, так что извиняюсь, если вопрос слишком глупый, но дело вот какое:
У меня есть контроллер, в котором я ввожу данные, клацаю на кнопку и перехожу к другому контроллеру, в котором производятся вычисления и выводятся на экран. Все вычисления прописаны во viewDidLoad второго контроллера, и если введенное значение слишком большое, то они занимают много времени. И все это время экран зависает на первом контроллере
Я хочу сделать так, чтобы пока производятся вычисления на экране была гифка, но вышло так, что сначала все считается, потом включается гифка и тут же переход. (subView я пробовала добавлять и в функцию кнопки и в функцию ShouldPerformSegue)


Ответ

В методе viewDidLoad вам нужно выполнять вычисления в бекграунд потоке, а пока все это вычисляется, показывать анимацию, и как только все вычисления будут закончены, в completion блоке останавливать анимацию.