UIRefreshControl appears blank when called from viewDidLoad or viewWillAppear

Originator:jpmfagundes
Number:rdar://27516269 Date Originated:24-Jul-2016 05:30 PM
Status:Duplicate/27468436 Resolved:
Product:iOS SDK Product Version:10
Classification: Reproducible:Always
 
Summary:
Using a UIRefreshControl with custom tintColor (blue) in a UITableViewController inside a UINavigationController.

If -[UIRefreshControl beginRefreshing] is called on viewDidLoad or viewWillAppear, the table's content offset is changed to show the refresh control but the view is blank, the refresh control does not show.

If called from viewDidAppear, the table's content offset is unchanged. A slight scroll up reveals the refresh control, but it has the default black tintColor. After manually refreshing it the tintColor is correct.

Steps to Reproduce:
Run the attached sample project and tap on the appropriated buttons.

On the viewDidAppear option, scroll up very slightly.

Expected Results:
If called from viewDidAppear and programmatically changing the table's content offset, the refresh control appears and has the desired tintColor.

This should be the behavior wether beginRefreshing is called from viewDidLoad, viewWillAppear or viewDidAppear.

Actual Results:
refreshControl appears blank or doesn't appear at all

Version:
iOS 10.0 (14A5309d)

Notes:
The bug also occurs when building with the iOS 9 SDK.

Configuration:
iPhone 6s 64gb

Attachments:
'RefreshControlBug.zip' was successfully uploaded.

https://github.com/JotaMelo/iOS10RefreshControlBug

Comments

iOS 12: Similar issue setting refresh control without calling beginRefreshing

Issue on iOS 12: Setting the refresh control for a standalone UITableView in viewDidLoad of a UIViewController, without calling beginRefreshing, can cause the refresh control not to appear. When the user attempts to pull-to-refresh, a big white gap is left.

Setting the refresh control on the table view in viewWillAppear, again without calling beginRefreshing, allows the refresh control to show correctly when the user pulls the table view.

Still broken in the iOS10 GM

Unfortunately there has been no change in the GM, and I'm yet to find any workarounds!

For some reason, not just UIRefresControls, but also some UIActivityIndicatorViews are affected in my codebase.


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!