更改 UITableView、iPhone 中滚动条的宽度和颜色

发布于 2024-12-13 14:26:57 字数 668 浏览 1 评论 0原文

我只能找到是否要显示滚动条或不使用

tableView.showsVerticalScrollIndicator = YES/NO;

,但如何自定义滚动条的颜色、宽度以及可能的其他功能?

任何帮助将不胜感激。

编辑:

我从代码片段中得到了这个想法,其中必须在 MKMapKit 中找到 Google 徽标并将其重新定位到某个位置以使其保持可见。 通过以下方法,可以将自定义图像设置为 UItbaleview 的滚动条。但我没有发现任何关于改变滚动条大小的信息。

-(void) ViewDidLoad
{
UIImageView *testView = [self.tableView.subviews objectAtIndex:1];
    UIImage *Img = [UIImage imageNamed:@"image.png"];
    [testView setImage:Img];
}

编辑: 根据 Nekto 的建议,您可以使用以下内容来更改宽度。

CGRect frame = testView.frame; 
frame.size.width = 10; //set any value you want.
testView.frame = frame;

I could only find if one wants to display scroll bar or not using

tableView.showsVerticalScrollIndicator = YES/NO;

but how can I customize the scroll bar for colour, width and if possible other features?

Any help will be greatly appreciated.

EDIT:

I got this idea from code snippets where one must find Google logo in MKMapKit and relocate it somewhere so that it remains visible.
by following method one can set custom image to scroll bar of UItbaleview. But I found nothing on changing size of scroll bar.

-(void) ViewDidLoad
{
UIImageView *testView = [self.tableView.subviews objectAtIndex:1];
    UIImage *Img = [UIImage imageNamed:@"image.png"];
    [testView setImage:Img];
}

EDIT:
As suggested by Nekto you can use following to change width.

CGRect frame = testView.frame; 
frame.size.width = 10; //set any value you want.
testView.frame = frame;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

鸠魁 2024-12-20 14:26:57

您只能设置滚动指示器的样式:

滚动指示器的样式。

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle

样式:

滚动指示器样式
滚动指示器的样式。您可以使用这些常量来设置indicatorStyle 样式的值。

typedef enum {
    UIScrollViewIndicatorStyleDefault,
    UIScrollViewIndicatorStyleBlack,
    UIScrollViewIndicatorStyleWhite
} UIScrollViewIndicatorStyle;

例如:

tableView.indicatorStyle = UIScrollViewIndicatorStyleBlack;

You can set only style of scroll indicators:

The style of the scroll indicators.

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle

Styles:

Scroll Indicator Style
The style of the scroll indicators. You use these constants to set the value of the indicatorStyle style.

typedef enum {
    UIScrollViewIndicatorStyleDefault,
    UIScrollViewIndicatorStyleBlack,
    UIScrollViewIndicatorStyleWhite
} UIScrollViewIndicatorStyle;

For example:

tableView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
孤独岁月 2024-12-20 14:26:57

您可以使用以下方法更改滚动指示器颜色:

tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;

希望这有帮助。

You can change the scroll indicator color using:

tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;

Hope this helps.

余生共白头 2024-12-20 14:26:57

您可以将这个出色的开源自定义滚动条添加到您的项目中,它完全可自定义:
https://github.com/BasheerSience/BRScrollBar

You can add this great open source custom scrollbar to your project, its totally customisable:
https://github.com/BasheerSience/BRScrollBar

橘和柠 2024-12-20 14:26:57

您可以隐藏原始滚动条并使用自定义滚动条进行滚动。

– (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 

可用于滚动内容,只需将自定义栏添加到表格中即可。

You can hide the original scroll bar and scroll using your custom scroll bar.

– (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 

can be used to scroll content, just add your custom bar to the table.

不交电费瞎发啥光 2024-12-20 14:26:57

对于 Swift 3

collectionView.indicatorStyle = UIScrollViewIndicatorStyle.white

For Swift 3

collectionView.indicatorStyle = UIScrollViewIndicatorStyle.white

梦魇绽荼蘼 2024-12-20 14:26:57

Swift-3,4

如果您无法覆盖方法“scrollViewDidScroll”(可能您正在将其用于某些其他功能或分页),请

func setScrollIndicatorColor(color: UIColor) {
        for view in self.tableView.subviews {
            if view.isKind(of: UIImageView.self),
                let imageView = view as? UIImageView,
                let _ = imageView.image  {
                imageView.image = nil
                view.backgroundColor = color
            }
        }

        self.tableView.flashScrollIndicators()
    }

在 viewDidAppear() 中尝试这个!!,您可以调用这个方法。

Swift-3,4

If you are not able to override method "scrollViewDidScroll" (may be you are using this for some other functionality, or paging), Try this !!

func setScrollIndicatorColor(color: UIColor) {
        for view in self.tableView.subviews {
            if view.isKind(of: UIImageView.self),
                let imageView = view as? UIImageView,
                let _ = imageView.image  {
                imageView.image = nil
                view.backgroundColor = color
            }
        }

        self.tableView.flashScrollIndicators()
    }

in viewDidAppear() you can call this method.

熟人话多 2024-12-20 14:26:57

我没有找到任何其他方法,但这个:

UITableView *v;
[v setIndicatorStyle:<#(UIScrollViewIndicatorStyle)#>];

只有 3 种可用的样式。如果你能找到实现你自己的 UIScrollViewIndicatorStyle 的方法,但我什至无法想象如何做到这一点:它们是在 UIKit 框架中深层实现的(在 UIScrollView.h 中声明),并且你只能设置一个标志,女巫会通过 UIScrollView 使用来知道,使用什么样式。所以,我看不到任何其他方法:您将需要以某种方式实现新的样式并在那里标记。有可能吗?

I did'n find any other way but this:

UITableView *v;
[v setIndicatorStyle:<#(UIScrollViewIndicatorStyle)#>];

There is only 3 available styles. If only you will find the way to implement your own UIScrollViewIndicatorStyle, but I can't even imagine HOW to do this: they are implemented deep in UIKit framework (declared in UIScrollView.h), and you can only set a flag, witch will used by UIScrollView to know, what style to use. So, I can't see any other way: you will need somehow to implement new style and flag there. Is it possible at all?

心病无药医 2024-12-20 14:26:57

使用 3 种默认颜色样式更改指示器颜色。

TextField.indicatorStyle=UIScrollViewIndicatorStyleWhite;

change indicator color with 3 default color style.

TextField.indicatorStyle=UIScrollViewIndicatorStyleWhite;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文