UIRefreschControl的Glitchy动画,带有导航栏的大标题
我有一个嵌入在导航控制器中的控制器,带有大标题和UIRefreshControl。 当我在tableView上进行快速刷新时,活动指示器的动画非常糟糕。
我不知道我的代码中是否有不良行为?
tableView.refreshControl = UIRefreshControl() tableView.refreshControl?.addTarget(self, action: #selector(downloadData), for: .valueChanged)
只将下面显示的代码放在 – (void)viewDidLoad方法中:
-(void)viewDidLoad { self.extendedLayoutIncludesOpaqueBars = true; self.navigationController.navigationBar.translucent=false; }
并确保导航栏半透明的属性设置为false,因为如果它为true,则导航栏需要其底层内容以反映半透明效果。 有关详细信息,请参阅此文章
有些时候可能会因为控制器中的某些组件(视图)打破一些约束规则而发生。
如果您已将导航栏半透明外观设置为false,则需要在视图控制器中包含以下代码以处理不透明条形。 此外,在storyboard中,tableView必须将顶部约束扩展到Superview。 不知何故,我不知道为什么没有适当的文档说明,但它似乎解决了毛刺动画。 self.extendedlayoutincludesopaquebars = true
在viewDidLoad中尝试此代码:
navigationController?.navigationBar.isTranslucent = true
或者在故事板中设置它
它帮助到我。
据我所知,我建议您使用UITableViewController
而不是UIViewController
,其中嵌入了UITableView
。
这样做的一大优点是UITableViewController
默认内置了很多这样的东西(比如UIRefreshControl
),所以你不必处理很多这些bug,手动向UIViewController
添加UIRefreshControl
总是一个对我来说有点儿麻烦。
通常,您希望尽可能尝试使用UITableViewController
,唯一不能使用它的地方是UITableView
无法占用整个UIViewController
。
有关更多信息,请查看UITableViewController上的文档。
编辑:此外,如果您可以发布实际获取数据的代码将会很有用,因为这通常也是问题所在。