IOS改变UIScrollView的滚动条颜色不同的颜色(ios Changing UIScroll

2019-06-27 03:27发布

我们怎样才能改变UIScrollView的滚动指示的颜色像蓝色,绿色等。

我知道我们可以把它改成白色,黑色。 但其他然后这些颜色。

非常感谢

Answer 1:

不幸的是,你不能,当然,你总是可以滚你自己。 这是你的选择:

UIScrollViewIndicatorStyleDefault:

滚动指示,这是黑色与白色边框的默认样式。 这种风格是对任何内容的背景良好。

UIScrollViewIndicatorStyleBlack:

指标的风格,是黑色的,比默认的风格更小。 这种风格是在白色背景的内容好。

UIScrollViewIndicatorStyleWhite:

指标的风格是白色的,比默认的风格更小。 这种风格是在黑色背景的内容好。



Answer 2:

下面是更安全斯威夫特3方法:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let verticalIndicator = scrollView.subviews.last as? UIImageView
    verticalIndicator?.backgroundColor = UIColor.green
}


Answer 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委托方法。

在GitHub上演示可用- https://github.com/ioshacks/UIScrollViewIndicatorColor



Answer 4:

雨燕2.0:

添加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()
}


Answer 5:

您可以更改指示器的图像,但你应该这样做repeadeatly

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    self.chageScrollIndicator()
}

func chageScrollIndicator (){
    if let indicator = self.collection.subviews.last as? UIImageView {
        let edge = UIEdgeInsets(top: 1.25,
                                left: 0,
                                bottom: 1.25,
                                right: 0)
        indicator.image = UIImage(named: "ScrollIndicator")?.withRenderingMode(.alwaysTemplate).resizableImage(withCapInsets: edge)
        indicator.tintColor = UIConfiguration.textColor
    }
}

您可以使用此2图像作为模板:



Answer 6:

我写了一篇关于这个的文章至今没有前。 不幸的是这种彩条通过预先定义的图像定义的,所以如果你要改变的吧一些额外的工作将需要的颜色。 看看到下面的链接,你一定会在这里找到答案,因为我试图解决同样的问题。

http://leonov.co/2011/04/uiscrollviews-scrollbars-customization/



Answer 7:

试试这个它肯定会帮助你

    for ( UIView *view in scrollBar.subviews ) {

       if (view.tag == 0 && [view isKindOfClass:UIImageView.class])
       {
        UIImageView *imageView      = (UIImageView *)view;
        imageView.backgroundColor   = [UIColor yellowColor];
       }
    }

说明 :定义UIScrollBar是子视图的集合。 这里滚动条指示器(垂直/水平)是子视图的一个,它是一个UIImageView.So如果我们设置自定义颜色,它的影响滚动条指标的UIImageView。



Answer 8:

这是怎样的滚动条的颜色改变:

    //scroll view  
    UIScrollView *scView = [[UIScrollView alloc] init];  
    scView.frame = self.view.bounds; //scroll view occupies full parent views  
    scView.contentSize = CGSizeMake(400, 800);  
    scView.backgroundColor = [UIColor lightGrayColor];  
    scView.indicatorStyle = UIScrollViewIndicatorStyleBlack;  
    scView.showsHorizontalScrollIndicator = NO;  
    scView.showsVerticalScrollIndicator = YES;  
    scView.scrollEnabled = YES;  
    [self.view addSubview: scView];


Answer 9:

如果你想添加图片为好,这里是斯威夫特3码

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let verticalIndicator = scrollView.subviews.last as? UIImageView
    verticalIndicator?.image = UIImage(named: "imageName")
}

这适用于的UITableView和UICollectionView为好。



Answer 10:

我遇到了同样的问题,最近,所以我决定写一类吧。

https://github.com/stefanceriu/UIScrollView-ScrollerAdditions

[someScrollView setVerticalScrollerTintColor:someColor]; 
[someScrollView setHorizontalScrollerTintColor:someColor];`

它与原来的图像混合它所以只有颜色会发生变化。 在另一方面,它也可以进行修改,以提供对滚动条使用自定义图像。



Answer 11:

以下是我在斯威夫特4,类似于以前的答案一样。 在我的情况下,我重新着色的形象是无形的,设置正确的圆角半径只有一次执行这个过程。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let color = UIColor.red
    guard
        let verticalIndicator = scrollView.subviews.last as? UIImageView,
        verticalIndicator.backgroundColor != color,
        verticalIndicator.image?.renderingMode != .alwaysTemplate
    else { return }
    verticalIndicator.layer.masksToBounds = true
    verticalIndicator.layer.cornerRadius = verticalIndicator.frame.width / 2
    verticalIndicator.backgroundColor = color
    verticalIndicator.image = verticalIndicator.image?.withRenderingMode(.alwaysTemplate)
    verticalIndicator.tintColor = .clear
}


Answer 12:

请使用下面的代码在iOS上渲染

 private bool _layouted;
 public override void LayoutSubviews()
 {
       base.LayoutSubviews();
       if (!_layouted)
       {
            this.Layer.BorderColor = UIColor.Red.CGColor;
            var Verticalbar = (UIImageView)this.Subviews[this.Subviews.Length - 1];

            Verticalbar.BackgroundColor = Color.FromHex("#0099ff").ToUIColor();
            var Horizontlebar = (UIImageView)this.Subviews[this.Subviews.Length - 2];

            Horizontlebar.BackgroundColor = Color.FromHex("#0099ff").ToUIColor();
            _layouted = true;
       }
}


Answer 13:

您可以使用自定义的UIScrollView滚动条来实现滚动条的颜色。 欲了解更多详细请看这里



文章来源: ios Changing UIScrollView scrollbar color to different colors