Quero deixar um pouco de espaço no início de um UITextField, assim como aqui: Adicione margem esquerda ao UITextField
Mas não sei como fazer isso com Swift.
ios
swift
cocoa-touch
uitextfield
LinusGeffarth
fonte
fonte
UITextField.leftView = paddingView
. então, dê ao padding a largura desejada.Respostas:
É isso que estou usando agora:
Swift 4.2
Swift 4
Swift 3:
Eu nunca coloquei outro preenchimento, mas você pode ajustar. Esta classe não cuida do rightView e leftView no campo de texto. Se você quer que ele seja manipulado corretamente, você pode usar algo como (exemplo em objc e eu só precisava do rightView:
fonte
newBounds
método com aUIEdgeInsetsInsetRect
função Em vez dereturn self.newBounds(bounds)
você poderia usarreturn UIEdgeInsetsInsetRect(bounds, padding)
e remover onewBounds
método.Se você usa uma extensão, não há necessidade de subclassificar UITextField e a nova funcionalidade será disponibilizada para qualquer UITextField no seu aplicativo:
Quando preciso definir o preenchimento de um campo de texto em qualquer lugar do meu aplicativo, basta fazer o seguinte:
Usando extensões Swift, a funcionalidade é adicionada diretamente ao UITextField sem subclassificação.
Espero que isto ajude!
fonte
X, Y, Z são os valores desejados
fonte
Essa margem pode ser alcançada configurando
leftView
/rightView
paraUITextField
.Atualizado para o Swift 4
Acabei de adicionar / colocar um
UIView
lado esquerdo e direito do campo de texto. Então agora a digitação será iniciada após a visualização.obrigado
Espero que isso tenha ajudado ...
fonte
Swift 4, Xcode 9
Eu gosto da resposta do Pheepster , mas que tal fazermos tudo a partir da extensão, sem exigir o código VC ou qualquer subclasse:
fonte
rightView?.frame.size.width ?? 0
paddingLeft
parapaddingLeftCustom
e o outro também. Se eu não fiz isso, um bug que me seguiu duas semanas teria aparecido quando você estava usando Views que possuem um UITextView (como UISearchBar). Apenas ... não defina os nomes padrão.no Swift 4.2 e no Xcode 10
Inicialmente, meu campo de texto é assim.
Depois de adicionar preenchimento no lado esquerdo, meu campo de texto é ...
Assim, também podemos criar o lado direito. (TextFieldName.rightViewMode = .always)
Se você deseja o código do tipo SharedInstance (escreva uma vez, use todos os itens), consulte o código abaixo.
Agora chame essa função assim.
fonte
Solução swift 3 simples - adicione código ao viewDidLoad:
Não há necessidade de código ridiculamente longo
fonte
Usei minha extensão Swift 5 testada:
Como usar
fonte
Para criar uma vista de preenchimento para o UITextField no Swift 5
fonte
Subclassificar UITextField é o caminho a percorrer. Abra um playground e adicione o seguinte código:
fonte
Aqui está a resposta de Haagenti atualizada para o Swift 4.2:
Referência: Atualizando para o Swift 4.2 .
Editar : conta para limpar o botão.
fonte
Crie UIView com espaço de preenchimento necessário e adicione-o ao membro textfield.leftView e defina o membro textfield.leftViewMode como UITextFieldViewMode.Always
fonte
Coloque este código no seu
viewDidLoad()
:Funciona para mim :)
fonte
Essa linha de código me salvou:
Para o Xamarin.iOS:
Para Swift:
fonte
Resposta do ScareCrow em Swift 3
fonte
No Swift 3. Você pode usar UITextField personalizado com recuo definido em seu construtor. Não precisa de declaração extra em um controlador.
fonte
Maneira fácil: fazer isso estendendo o UITextField
Em seguida, você pode definir o preenchimento para qualquer borda dessa maneira:
fonte
Prefiro usar
IBDesignable
classe eIBInspectable
propriedades para permitir que eu defina o preenchimento via storyboards do Xcode e mantenha-o reutilizável. Também atualizei o código para funcionar no Swift 4.fonte
* Estendendo o UITextField no Swift 5 *
fonte
fonte