UIRefreshControl颜色问题

时间:2015-01-16 10:18:08

标签: objective-c uirefreshcontrol tintcolor

Stackoverflowers!

我再次来到蜂巢的心灵寻求帮助。这一次是一个非常特殊的问题,不幸的是,我无法理解它。

该问题与使用UIRefreshControl的下拉刷新机制有关。下拉本身通过 - 拉下来启动时工作正常。当我想手动触发加载时,它也可以正常工作,但是有一个阻塞问题 - 活动指示器的颜色不会改变为它设置的颜色。

-viewDidLoad

    _publicationsRefreshControl = [[UIRefreshControl alloc] init];
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:NSLocalizedString(localizationRefreshControlTitle, nil) attributes:@{NSFontAttributeName : [UIFont fontWithName:fontLatoRegular size:14], NSForegroundColorAttributeName : [UIColor whiteColor]}];
_publicationsRefreshControl.attributedTitle = attributedTitle;
_publicationsRefreshControl.tintColor = [UIColor whiteColor];
[_publicationsRefreshControl addTarget:self action:@selector(refreshPublications:) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:_publicationsRefreshControl];

这正确地初始化了UIRefreshControl,当你下拉CollectionView时它确实有效。

当我使用以下方法时:

- (void)action {
[_publicationsRefreshControl beginRefreshing];
[_collectionView setContentOffset:CGPointMake(0, _collectionView.contentOffset.y - _publicationsRefreshControl.frame.size.height) animated:YES];
[_publicationsRefreshControl sendActionsForControlEvents:UIControlEventValueChanged]; }

要手动启动刷新,活动指示器的颜色不会变为白色。它保持默认颜色。我尝试在动作方法中设置tintColor属性,在所有可能的放置组合中都无济于事。

有趣的是,如果我下拉集合视图并首先开始刷新,然后尝试手动启动刷新,它将正确地着色为白色。仅当我尝试首先手动刷新时才会出现颜色问题。

我尝试过的其他选项:

  1. 试图调用tintColorDidChange
  2. 尝试手动更改基础ActivityIndi​​catorView的样式
  3. 我感谢任何人愿意提供的任何帮助:)

1 个答案:

答案 0 :(得分:2)

尝试:

[_myRefreshControl endRefreshing];
_myRefreshControl.tintColor = [UIColor whiteColor];

为我工作!