Existe-t-il un moyen de masquer les indicateurs de défilement dans un UIScrollView?

133

J'ai un cas d'utilisation où ces indicateurs perturbent l'interaction de l'utilisateur. Puis-je sous-classer et remplacer une méthode ou faire quelque chose de similaire pour supprimer les indicateurs de défilement de la vue de défilement?

Merci
la source

Réponses:

272

Définissez les propriétés showsHorizontalScrollIndicatoret showsVerticalScrollIndicatordu UIScrollViewsur NO.

[tableView setShowsHorizontalScrollIndicator:NO];
[tableView setShowsVerticalScrollIndicator:NO];

Documentation - UIScrollView

conserverCompte
la source
Comme appris de Docs, vous pouvez même l'utiliser directement pour le scrollview! [scrollview setShowsHorizontalScrollIndicator: NO]; Merci à @retainCount
Rajal
1
À partir d'iOS 11, cela devrait être appelé dans viewWillAppear, cela ne fonctionne pas s'il est appelé dans viewDidLoad
melvinto
61

// Pour UITableView - Objective-C

tbl.showsHorizontalScrollIndicator = NO;
tbl.showsVerticalScrollIndicator = NO;

// Pour UITableView - SWIFT 3.0

tbl.showsHorizontalScrollIndicator = false
tbl.showsVerticalScrollIndicator = false

// Pour UIScrollView - Objective-C

scrl.showsHorizontalScrollIndicator = NO;
scrl.showsVerticalScrollIndicator = NO;

// Pour UIScrollView - SWIFT

scrl.showsHorizontalScrollIndicator = false
scrl.showsVerticalScrollIndicator = false

Changement de XIB ou de storyboard

entrez la description de l'image ici

Bhavesh Nayi
la source
tableView a également des cases à cocher pour cela - je travaille avec xCode 11
Andy Weinstein
16

Pour ceux qui cherchent à faire cela à Swift.

self.tableView.showsHorizontalScrollIndicator = false
self.tableView.showsVerticalScrollIndicator = false
Davidrayowens
la source
8

Pour UIScrollView dans Swift

scrollView?.showsHorizontalScrollIndicator = false
scrollView?.showsVerticalScrollIndicator = false
mattyU
la source
4

Voici vos UITableViewpropriétés de défilement:

[YourTableView setShowsHorizontalScrollIndicator:NO];
[YourTableView setShowsVerticalScrollIndicator:NO];

Voici vos UIScrollViewpropriétés de défilement:

[YourScroll setShowsHorizontalScrollIndicator:NO];
[YourScroll setShowsVerticalScrollIndicator:NO];
Darshan Kunjadiya
la source
3

Swift 3.0extension pour UIScrollViewet UITableView:

import Foundation

extension UIScrollView {
    func hideIndicators() {
        showsHorizontalScrollIndicator = false
        showsVerticalScrollIndicator = false
    }
}
Roman Barzyczak
la source
2
Pourquoi diable utilisez-vous une extension? Vous compliquez les choses avec des lignes de code inutiles pour les gens qui essaient d'apprendre, quand un simple view.showsHorizontalScrollIndicator = false fonctionnerait…
petaire
2
@petaire - Vous devez vous calmer lol. J'aime vraiment vraiment cette extension.
quemeful
Les extensions sont trop exagérées pour cela, veuillez utiliser ces paramètres directement.
Pedro Paulo Amorim
0

Aucune réponse n'a fonctionné pour moi car la bague de mise au point des indicateurs est affichée à chaque fois, mais je résous mon problème via NSStoryboard.

NSCollectionView a un diagramme;

Scroll View - Collection View then Clip View then Scroller (vertical) & Scroller (Horizontal)

entrez la description de l'image ici

Cliquez sur n'importe quel objet Scroller puis dans Attributes Inspectorset Focus Ringproperty to None. Si vous ne l'avez pas défini, vous pouvez rencontrer un problème lorsque les utilisateurs modifient le paramètre Appearanceentre Darket Light.

Elia
la source