web-dev-qa-db-fra.com

Changer la largeur et la couleur de la barre de défilement dans UITableView, iphone

Je n'ai trouvé que si l'on veut afficher la barre de défilement ou ne pas utiliser 

tableView.showsVerticalScrollIndicator = YES/NO;

mais comment puis-je personnaliser la barre de défilement pour la couleur, la largeur et, si possible, d'autres fonctionnalités? 

Toute aide est la bienvenue.

MODIFIER:

J'ai eu cette idée à partir d'extraits de code où il faut trouver le logo Google dans MKMapKit et le déplacer quelque part pour qu'il reste visible. En appliquant la méthode suivante, il est possible de définir une image personnalisée sur la barre de défilement de UItbaleview. Mais je n'ai rien trouvé sur la modification de la taille de la barre de défilement.

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

EDIT: Comme suggéré par Nekto, vous pouvez utiliser ce qui suit pour changer la largeur. 

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

Vous ne pouvez définir que le style de indicateurs de défilement:

Le style des indicateurs de défilement.

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle

Styles:

Style des indicateurs de défilement Style des indicateurs de défilement. Vous utilisez ces constantes pour définir la valeur du style indicatorStyle.

typedef enum {
    UIScrollViewIndicatorStyleDefault,
    UIScrollViewIndicatorStyleBlack,
    UIScrollViewIndicatorStyleWhite
} UIScrollViewIndicatorStyle;

Par exemple:

tableView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
39
Nekto

Vous pouvez changer la couleur de l'indicateur de défilement en utilisant:

tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;

J'espère que cela t'aides.

7
Birju

Vous pouvez ajouter cette grande barre de défilement personnalisée open source à votre projet. Elle est totalement personnalisable: https://github.com/BasheerSience/BRScrollBar

3
Basheer_CAD

Swift-3,4 

Si vous ne pouvez pas remplacer la méthode "scrollViewDidScroll", vous l'utilisez peut-être pour une autre fonctionnalité ou pour la pagination. Essaye ça !!

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

dans viewDidAppear (), vous pouvez appeler cette méthode.

2
iMRahib

Vous pouvez masquer la barre de défilement d'origine et faire défiler à l'aide de votre barre de défilement personnalisée.

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

peut être utilisé pour faire défiler le contenu, ajoutez simplement votre barre personnalisée à la table.

1
Manali

Je n'ai pas trouvé d'autre moyen que celui-ci:

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

Il n'y a que 3 styles disponibles. Si seulement vous trouviez le moyen d’implémenter votre propre UIScrollViewIndicatorStyle, mais je n’imagine même pas COMMENT le faire: ils sont implémentés profondément dans le framework UIKit (déclaré dans UIScrollView.h), et vous ne pouvez définir qu’un indicateur, qui utilisé par UIScrollView pour savoir quel style utiliser. Donc, je ne vois pas d'autre moyen: vous aurez besoin d'une manière ou d'une autre d'implémenter un nouveau style et un nouveau drapeau. Est-ce possible?

0
SentineL

Pour Swift 3

collectionView.indicatorStyle = UIScrollViewIndicatorStyle.white

0
ttorbik

changer la couleur de l'indicateur avec 3 styles de couleurs par défaut.

TextField.indicatorStyle = UIScrollViewIndicatorStyleWhite;

0
pallavi