Pergunta

Eu quero ter uma fina borda cinza em torno de um UITextView. Passei pela documentação da Apple, mas não consegui encontrar nenhuma propriedade lá. Por favor ajude.

Foi útil?

Solução

#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];

Outras dicas

Adicione o seguinte para cantos arredondados:

self.yourUITextview.layer.cornerRadius = 8; 

Aqui está o código que usei, para adicionar uma borda ao redor do meu TextView Controle chamado "tbComments":

self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;

E aqui está o que parece:

enter image description here

Mole-mole.

Eu adiciono UIImageView Como uma subjeconia do UITextView. Isso corresponde à fronteira nativa em um UITextField, incluindo o gradiente de cima para baixo:

enter image description here

textView.backgroundColor = [UIColor clearColor];
UIImageView *borderView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height)];
borderView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
UIImage *textFieldImage = [[UIImage imageNamed:@"TextField.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 8, 15, 8)];
borderView.image = textFieldImage;
[textField addSubview: borderView];
[textField sendSubviewToBack: borderView];

Essas são as imagens PNG que eu uso e uma representação JPG:

@1x

@2x

enter image description here

Funciona muito bem, mas a cor deve ser um CGColor, não UIColor:

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];

Para programação rápida, use isso

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor

Isso é o mais próximo possível de um Uitextfield original

func updateBodyTextViewUI() {
    let borderColor = UIColor.init(red: 212/255, green: 212/255, blue: 212/255, alpha: 0.5)

    self.bodyTextView.layer.borderColor = borderColor.CGColor
    self.bodyTextView.layer.borderWidth = 0.8
    self.bodyTextView.layer.cornerRadius = 5
}

Acredito que as respostas acima são para as versões anteriores do Swift. Pesquisei um pouco e o código abaixo funciona para o Swift 4. Apenas compartilhando -o para quem quer que possa se beneficiar.

self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;

Codificação feliz!

A partir do iOS 8 e Xcode 6, agora acho que a melhor solução é subclasse UITextView e marcar a subclasse como um IB_Designable, o que permitirá que você visualize a borda no storyboard.

Cabeçalho:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface BorderTextView : UITextView

@end

Implementação:

#import "BorderTextView.h"

@implementation BorderTextView

- (void)drawRect:(CGRect)rect
{
    self.layer.borderWidth = 1.0;
    self.layer.borderColor = [UIColor blackColor].CGColor;
    self.layer.cornerRadius = 5.0f;
}

@end

Em seguida, basta arrastar seu uitextview no storyboard e definir sua classe como bordertextview

O que fez funcionar (além de seguir as respostas aqui) é adicionar o borderStyle atributo:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;

Apenas uma pequena adição. Se você tornar a borda um pouco mais larga, ela interferirá no lado esquerdo e direito do texto. Para evitar isso, adicionei a seguinte linha:

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);

No Swift 3, você pode usar as duas linhas a seguir:

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0

Eu resolvi esse problema no storyboard colocando um totalmente desativado UIButton atrás do UITextView e fazer a cor de fundo do UITextView ClearColor. Isso funciona sem exigir código ou pacotes extras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top