Как мне настроить позицию UIRefreshControl в моей иерархии представлений?

У меня есть настраиваемый UIRefreshControl «потяните, чтобы обновить», и по какой-то причине, когда я начинаю прокручивать, представление появляется над всеми другими представлениями, вместо того, чтобы постепенно показывать себя по мере того, как прокрутка опускается вниз ... вот что я имею в виду:

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

Теперь я попытался исправить это, сделав цвета фона и оттенка ясными в viewDidLoad:

    var refreshControl: UIRefreshControl!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        refreshControl = UIRefreshControl()
        refreshControl.backgroundColor = UIColor.clearColor()
        refreshControl.tintColor = UIColor.clearColor()
        collectionView?.addSubview(refreshControl)

    }

Хотя это действительно решает проблему обновления, которое просто накладывается на все, независимо от его прозрачности, refreshControl все еще находится на вершине моей иерархии представлений, вы можете видеть, когда я отпускаю прокрутку, буквы все еще нависают над представлением .. И хотя он скрывает представление, когда вы начинаете перетаскивать прокрутку, он очень быстро дает сбои, показывая представление снова:

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

Теперь я даже пробовал вызывать методы sendSubviewToBack и insertSubview:aboveSubview:, но они ничего не делают ... Имейте в виду, что это collectionViewController, а не UIViewController с collectionView наверху, так что я предполагаю, что за ним нет представления. вид, который я могу отправить на задний план ... но есть ли какая-нибудь логика, которую я могу реализовать, которая будет регулировать границы представлений, когда начинается прокрутка?


person John Jackson    schedule 10.09.2015    source источник


Ответы (1)


Попробуй это:

refreshControl.layer.zPosition = -1

Также будьте осторожны при использовании UIRefreshControl, не прикрепляя его к фактическому UITableViewController. Вы можете увидеть странные артефакты, такие как заикание (даже прикрепление его только к UITableView вызовет ошибки). Видеть:

UIRefreshControl без UITableViewController

person bobics    schedule 10.09.2015
comment
когда я добавляю его как subView к своему фону, он просто исчезает, я имею в виду, что движения элемента управления все еще существуют, но его не видно - person John Jackson; 10.09.2015
comment
Я могу справиться с установкой очистки backgroundColor и tintColor RefreshControl в viewDidLoad, чтобы правильно замаскировать себя, однако что я могу сделать с внезапным сбоем в доли секунды, когда он сводит на нет этот код и показывает себя, когда начинается перетаскивание прокрутки? - person John Jackson; 11.09.2015
comment
что я могу сделать, чтобы предотвратить это? - person John Jackson; 11.09.2015
comment
@ItzhakIra у вас есть пример кода или видео / гифка проблемы? - person bobics; 11.09.2015
comment
Я думаю, что лучше всего, если вы добавите его в свой исходный вопрос или сделаете ссылку на него здесь (например, общедоступный URL-адрес с помощью dropbox). - person bobics; 11.09.2015
comment
zPosition в основном делает то же самое, что и добавление его в мой backgroundView, он заставляет его исчезнуть - person John Jackson; 11.09.2015
comment
Предоставьте образец проекта и поделитесь им на GitHub. - person bobics; 11.09.2015
comment
Вот ссылка на видео, показывающее небольшой сбой в начале перетаскивания прокрутки dropbox.com/s/eryzqh0r1l27uv9/GLITCH.mov?dl=0 - person John Jackson; 11.09.2015
comment
как вы можете видеть, код, который я добавил, чтобы прояснить, когда представление загружается, работает, однако в течение небольшой доли секунды, когда начинается перетаскивание, он показывает себя - person John Jackson; 11.09.2015