UIActivityIndi​​catorView忽略颜色属性

时间:2015-12-07 10:33:26

标签: ios

这是我初始化UIActivityAndicatorView的代码:

self.indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge];
    self.indicator.color = [UIColor colorWithRed:252.0 green:113.0 blue:9.0 alpha:1.0];
    self.indicator.center = self.view.center;
    [self.view addSubview:self.indicator];

动画开始后 - 指示符出现在适当的位置,但是为白色。为什么忽略颜色属性?

3 个答案:

答案 0 :(得分:4)

值在0到1之间浮动。试试这个:

    self.indicator.color = [UIColor colorWithRed:252.0/255.0 green:113.0/255.0 blue:9.0/255.0 alpha:1.0];

答案 1 :(得分:0)

我很惊讶所选答案在2015年12月有效,因为无论我在iOS 9.2中做什么,我都无法使用白色来显示任何颜色。这适用于大白旋转器。

我所做的工作是使用alpha为0启动控件,然后在100毫秒后更改颜色并显示它。下面的代码来自我在github上的ATMHud fork:

- (void)setActivity:(BOOL)activity
{
    hudView.showActivity = activity;
    if (activity) {
        [hudView.activity startAnimating];
        hudView.activity.alpha = 0;
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^
            {
                // Workaround for bug where Apple ignores the color property
                [self changeColor];
            } );
    } else {
        [hudView.activity stopAnimating];
    }
}
- (void)changeColor
{
    hudView.activity.color = [UIColor blackColor];
    [UIView animateWithDuration:.250+_animateDuration animations: ^{ hudView.activity.alpha = 1; }];
}

答案 2 :(得分:0)

请注意,activityIndicatorViewStyle将根据documentation覆盖color属性,这一点非常重要:

  

如果为活动指示器设置颜色,它将覆盖activityIndi​​catorViewStyle属性提供的颜色。

所以你必须首先设置样式,然后是颜色:

let activityIndicator = UIActivityIndicatorView()
activityIndicator.activityIndicatorViewStyle = .whiteLarge
let myColor = UIColor.colorWithRed(252.0/255.0, green: 113.0/255.0, blue: 9.0/255.0, alpha: 1.0)
activityIndicator.color = myColor
activityIndicator.startAnimating()

那应该是它。