Estou usando uma exibição de texto como compositor de comentários.
No inspetor de propriedades, não consigo encontrar nada como uma propriedade de estilo de borda para poder usar um retângulo arredondado, algo como UITextField
.
Portanto, a pergunta é: como posso estilizar um UITextView
like a UITextField
com um retângulo arredondado?
ios
uitextview
harshalb
fonte
fonte
UITextField
e simplesmente desligaruserInteractionEnabled
?Respostas:
Não há um estilo implícito que você precise escolher; isso envolve escrever um pouco de código usando a
QuartzCore
estrutura:Funciona apenas no OS 3.0 e superior, mas acho que agora é a plataforma de fato.
fonte
UITextField
com aborderStyle
propriedade definida comoUITextBorderStyleRoundedRect
- veja meu post abaixo.esse código funcionou bem para mim:
fonte
Versão Swift 3
Após configurar a visualização de texto no construtor de interface.
Versão Swift 2.2
fonte
Editar: você precisa importar
para usar o raio do canto.
Tente isso funcionará com certeza
Como Rob descobriu, definindo se você deseja que a cor da borda seja semelhante,
UITextField
então você precisa alterar a largura da borda para 2.0 e a cor para cinza adicionando a seguinte linhafonte
Eu queria o negócio real, então adicionei
UIImageView
como uma sub-visualização do arquivoUITextView
. Isso corresponde à borda nativa em umUITextField
, incluindo o gradiente de cima para baixo:Estas são as imagens que eu uso:
fonte
Uma solução é adicionar um UITextField abaixo do UITextView , tornar o
UITextView
plano de fundo transparente e desativar qualquer interação do usuário noUITextField
. Em seguida, no código, mude oUITextField
quadro com algo parecidoVocê terá exatamente a mesma aparência de um campo de texto.
E como sugerido por Jon , você deve inserir esse código
[UIViewController viewDidLayoutSubviews]
no iOS 5.0 ou superior.fonte
viewDidLayoutSubviews:
(iOS 5.0 ou superior).Para obter o melhor efeito, você deve usar uma imagem de plano de fundo personalizada (extensível). É também assim que a
UITextField
borda arredondada da linha é desenhada.fonte
Uma maneira que encontrei para fazer isso sem programação é tornar o fundo do campo de texto transparente e, em seguida, colocar um botão Rect Round atrás dele. Altere as configurações do botão para desativá-lo e desmarque a
Disable adjusts image
caixa de seleção.fonte
Você pode conferir minha biblioteca chamada DCKit .
Você seria capaz de fazer uma exibição de texto de canto arredondado (assim como o campo de texto / botão / sem formatação
UIView
)Interface Builder
diretamente:Ele também possui muitos outros recursos úteis, como campos de texto com validação, controles com bordas, bordas tracejadas, vistas de círculo e linha fina etc.
fonte
Eu sei que já existem muitas respostas para essa, mas realmente não achei nenhuma delas suficiente (pelo menos em Swift). Eu queria uma solução que fornecesse a mesma borda exata que um UITextField (não uma aproximada que pareça mais ou menos agora, mas uma que seja exatamente igual e sempre será exatamente igual). Eu precisava usar um UITextField para fazer backup do UITextView para o segundo plano, mas não queria criar isso separadamente todas as vezes.
A solução abaixo é um UITextView que fornece seu próprio UITextField para a borda. Esta é uma versão reduzida da minha solução completa (que adiciona suporte de "espaço reservado" ao UITextView de maneira semelhante) e foi publicada aqui: https://stackoverflow.com/a/36561236/1227119
fonte
Tentei o código Quartzcore e constatei que ele causava atraso no meu antigo 3G (eu uso para testes). Não é um grande problema, mas se você quiser ser o mais inclusivo possível para diferentes ios e hardware, recomendo a resposta de Andrew_L acima - ou faça suas próprias imagens e aplique de acordo.
fonte
Há uma excelente imagem de fundo idêntica à
UITextView
usada para enviar mensagens de texto no aplicativo Mensagens do iPhone. Você precisará do Adobe Illustrator para obtê-lo e modificá-lo. elementos do vetor da interface do usuário do iphonefonte
fonte
Você pode criar um campo de texto que não aceita eventos em cima de uma exibição de texto como esta:
fonte
Se você deseja manter o código do seu controlador limpo, pode subclassificar o UITextView como abaixo e alterar o nome da classe no Interface Builder.
RoundTextView.h
RoundTextView.m
fonte
Aqui está a minha solução:
fonte
Eu não acho que isso é possível. mas você pode fazer
UITableView
(agrupado) com 1 seção e 1 célula vazia e usá-lo como um contêiner para o seuUITextView
.fonte
Esta é uma pergunta antiga, e eu também fui procurado por esta resposta. A resposta de luvieeres está 100% correta e mais tarde Rob adicionou algum código. Isso é excelente, mas encontrei um terceiro em outra pergunta. que me parece muito útil. Eu não apenas procurei por aparência semelhante , mas também por suporte a
UITextField
váriasUITextView
linhas. ChatInputSample satisfeito ambos. É por isso que acho que esse terceiro pode ser útil para outras pessoas. Também graças a Timur, ele mencionou esse código aberto aqui .fonte
No iOS7, o seguinte corresponde perfeitamente à borda UITextField (pelo menos aos meus olhos):
Não há necessidade de importar nada de especial.
Graças a @uvieere e @hanumanDev cujas respostas vão quase lá :)
fonte
Que tal apenas:
fonte
UITextField
comuserInteractionEnabled
definido comoNO
.