Existe uma maneira de ocultar os indicadores de rolagem em um UIScrollView?

133

Eu tenho um caso de uso em que esses indicadores atrapalham a interação do usuário. Posso subclassificar e substituir um método ou fazer algo semelhante para remover os indicadores de rolagem da exibição de rolagem?

obrigado
fonte

Respostas:

272

Defina as propriedades showsHorizontalScrollIndicatore showsVerticalScrollIndicatorde UIScrollViewpara NO.

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

Documentação - UIScrollView

retemount
fonte
Conforme aprendido no Documentos, você pode até usá-lo para a visualização de rolagem diretamente! [scrollview setShowsHorizontalScrollIndicator: NO]; Obrigado @retainCount
Rajal
1
A partir de iOS 11, este deve ser chamado em viewWillAppear, ele não funciona se for chamado em viewDidLoad
melvinto
61

// Para UITableView - Objective-C

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

// Para UITableView - SWIFT 3.0

tbl.showsHorizontalScrollIndicator = false
tbl.showsVerticalScrollIndicator = false

// Para UIScrollView - Objective-C

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

// Para UIScrollView - SWIFT

scrl.showsHorizontalScrollIndicator = false
scrl.showsVerticalScrollIndicator = false

Mudar de XIB ou storyboard

insira a descrição da imagem aqui

Bhavesh Nayi
fonte
tableView também tem caixas de seleção para isso - estou trabalhando com o xCode 11
Andy Weinstein
16

Para quem quer fazer isso no Swift.

self.tableView.showsHorizontalScrollIndicator = false
self.tableView.showsVerticalScrollIndicator = false
davidrayowens
fonte
8

Para UIScrollView no Swift

scrollView?.showsHorizontalScrollIndicator = false
scrollView?.showsVerticalScrollIndicator = false
mattyU
fonte
4

Estas são suas UITableViewpropriedades de rolagem:

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

Estas são suas UIScrollViewpropriedades de rolagem:

[YourScroll setShowsHorizontalScrollIndicator:NO];
[YourScroll setShowsVerticalScrollIndicator:NO];
Darshan Kunjadiya
fonte
3

Swift 3.0extensão para UIScrollViewe UITableView:

import Foundation

extension UIScrollView {
    func hideIndicators() {
        showsHorizontalScrollIndicator = false
        showsVerticalScrollIndicator = false
    }
}
Roman Barzyczak
fonte
2
Por que diabos você está usando uma extensão? Você está complicando as coisas com linhas inúteis de código para as pessoas que estão tentando aprender, quando um simples view.showsHorizontalScrollIndicator = false iria trabalhar ...
petaire
2
@ petaire - Você precisa se acalmar lol. Na verdade, eu realmente gosto dessa extensão.
quemeful
As extensões são muito exageradas para isso, use essas configurações diretamente.
Pedro Paulo Amorim
0

Nenhuma resposta funcionou para mim porque o anel de foco dos indicadores é mostrado sempre, mas eu resolvo meu problema via NSStoryboard.

NSCollectionView tem um diagrama;

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

insira a descrição da imagem aqui

Clique em qualquer objeto Scroller e, em seguida, em propriedade Attributes Inspectorset Focus Ringpara None. Se você não o tiver definido, poderá ter um problema quando os usuários alterarem o Appearanceintervalo entre Darke Light.

elia
fonte