Yanıtlar:
#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 ...
, ama dediğim gibi, katman salt okunurdur, bu nedenle katmanın ayarlanacak herhangi bir yöntemi veya değişkeni yoktur
Yuvarlatılmış köşeler için aşağıdakileri ekleyin:
self.yourUITextview.layer.cornerRadius = 8;
TextView
"TbComments" adlı denetimimin etrafına kenarlık eklemek için kullandığım kod :
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Ve işte göründüğü gibi:
Tereyağından kıl çeker gibi.
Ben eklemek UIImageView
bir subview UITextView
. Bu UITextField
, yukarıdan aşağıya degrade dahil olmak üzere a üzerindeki yerel sınırla eşleşir :
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];
Bunlar kullandığım png resimleri ve bir jpg temsili:
code
Eklenen görüntü ile bu en iyi şekilde çalışır: resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Harika çalışıyor, ancak renk şu şekilde CGColor
olmamalı UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Yukarıdaki cevapların Swift'in önceki sürümleri için olduğuna inanıyorum. Biraz Google'da araştırdım ve aşağıdaki kod Swift 4 için çalışıyor. Sadece onu kim yararına olursa olsun paylaşın.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Mutlu Kodlama!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
Swift Programlama için bunu kullanın
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
bu, orijinal bir UITextField'den olabildiğince yakın
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
}
Storyboard - Identity Inspector - User Defined Runtime Attribute'tan UITextView'a kenarlık ekleyebilirsiniz
İOS 8 ve Xcode 6'dan itibaren, şimdi en iyi çözümün UITextView alt sınıfına girmek ve alt sınıfı bir IB_DESIGNABLE olarak işaretlemek olduğunu buluyorum, bu da kenarlığı film şeridinde görüntülemenizi sağlayacak.
Başlık:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Uygulama:
#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
Ardından, UITextView'unuzu storyboard'da sürükleyin ve sınıfını BorderTextView olarak ayarlayın.
Çalışmasını sağlayan şey (buradaki cevapları takip etmenin yanı sıra) borderStyle
özniteliği eklemektir :
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Swift 3'te aşağıdaki iki satırı kullanabilirsiniz:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Bu sorunu film şeridinde tamamen devre dışı UIButton
bırakarak UITextView
ve UITextView
clearColor'un arka plan rengini yaparak çözdüm. Bu, ekstra kod veya paket gerektirmeden çalışır.