【问题标题】:How to change UIScrollView Indicator color?如何更改 UIScrollView 指示器颜色?
【发布时间】:2017-03-21 21:52:45
【问题描述】:

当我使用 UIColor.blue 时,它会发生变化,但是当我尝试应用 RGB 时,它不会反映在滚动视图指示器中。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let verticalIndicator: UIImageView = (scrollView.subviews[(scrollView.subviews.count - 1)] as! UIImageView)
    verticalIndicator.backgroundColor = UIColor(red: 211/255, green: 138/255, blue: 252/255, alpha: 1)
//        verticalIndicator.backgroundColor = UIColor.blue

}

【问题讨论】:

    标签: ios swift uiscrollview swift3 uicolor


    【解决方案1】:

    我认为问题就在这里

    verticalIndicator.backgroundColor = UIColor(red: 211/255, green: 138/255, blue: 252/255, alpha: 1)
    

    改成

    verticalIndicator.backgroundColor = UIColor(red: 211/255.0, green: 138/255.0, blue: 252/255.0, alpha: 1).
    

    除法 211/255 的结果是整数类型,所以它只返回 0 或 1(在这种情况下我认为它是 0)。

    【讨论】:

      【解决方案2】:

      当使用 RGB 值时,像这样设置 UIColor

      self.view.backgroundColor = UIColor.init(red: <#T##CGFloat#>, green: <#T##CGFloat#>, blue: <#T##CGFloat#>, alpha: <#T##CGFloat#>)
      

      【讨论】:

        【解决方案3】:

        两个 UIScrollView 指示器都是 UIScrollView 的子视图。因此,我们可以访问 UIScrollView 的子视图并更改子视图的属性。

        1.添加UIScrollViewDelegate

        @interface ViewController : UIViewController<UIScrollViewDelegate>
        @end
        

        2。在实现部分添加scrollViewDidScroll

        -(void)scrollViewDidScroll:(UIScrollView *)scrollView1
         {
             //get refrence of vertical indicator
               UIImageView *verticalIndicator = ((UIImageView *)[scrollView.subviews objectAtIndex:(scrollView.subviews.count-1)]);
            //set color to vertical indicator
              [verticalIndicator setBackgroundColor:[UIColor redColor]];
        
           //get refrence of horizontal indicator
             UIImageView *horizontalIndicator = ((UIImageView *)[scrollView.subviews objectAtIndex:(scrollView.subviews.count-2)]);
          //set color to horizontal indicator
             [horizontalIndicator setBackgroundColor:[UIColor blueColor]];
         }
        

        注意:- 因为每次滚动时这些指标都会更新(意味着重置为默认值)。所以,我们把这段代码放在 scrollViewDidScroll 委托方法中。

        对于斯威夫特

        添加 UIScrollView 委托。

        func scrollViewDidScroll(scrollView: UIScrollView){
           let verticalIndicator: UIImageView = (scrollView.subviews[(scrollView.subviews.count - 1)] as! UIImageView)
           verticalIndicator.backgroundColor = UIColor.greenColor()
        
           let horizontalIndicator: UIImageView = (scrollView.subviews[(scrollView.subviews.count - 2)] as! UIImageView)
           horizontalIndicator.backgroundColor = UIColor.blueColor()
        }
        

        【讨论】:

        【解决方案4】:

        您还应该添加此行以获得您想要的确切颜色:

        verticalIndicator.image = nil
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-27
          • 1970-01-01
          • 1970-01-01
          • 2012-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多