Respostas:
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
self.myView.layer.borderWidth ...
, mas como eu disse, a camada é somente leitura, então camada não têm quaisquer métodos ou variáveis para definir
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:
Mole-mole.
Eu adiciono UIImageView
como uma subvisualização do UITextView
. Isso corresponde à borda nativa em um UITextField
, incluindo o gradiente de cima para baixo:
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];
Estas são as imagens png que eu uso e uma representação jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Funciona muito bem, mas a cor deve ser uma CGColor
, não UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Eu acredito que as respostas acima são para as versões anteriores do Swift. Pesquisei um pouco no Google e o código abaixo funciona para o Swift 4. Basta compartilhá-lo para quem puder se beneficiar.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Feliz codificação!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
para programação rápida, use este
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
UIColor(white: 0.2, alpha: 1).CGColor
isso é o mais próximo que pude 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
}
você pode adicionar borda ao UITextView no Storyboard - Identity Inspector - Atributo de tempo de execução definido pelo usuário
No iOS 8 e no Xcode 6, agora acho que a melhor solução é subclassificar o UITextView e marcar a subclasse como um IB_DESIGNABLE, o que permitirá visualizar 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, arraste seu UITextView no storyboard e defina sua classe como BorderTextView
O que o 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;
Eu resolvi esse problema no storyboard, colocando um totalmente desativado UIButton
por trás do UITextView
e tornando a cor de fundo do UITextView
clearColor. Isso funciona sem a necessidade de código ou pacotes extras.