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
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!
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.