Jawaban:
#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 ..., tetapi seperti yang saya katakan, lapisan hanya-baca, jadi lapisan tidak memiliki metode atau variabel untuk disetel
Tambahkan berikut ini untuk sudut membulat:
self.yourUITextview.layer.cornerRadius = 8;
Berikut kode yang saya gunakan, untuk menambahkan batas di sekitar TextViewkontrol saya bernama "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Dan inilah tampilannya:

Sangat mudah.
Saya tambahkan UIImageViewsebagai subview dari UITextView. Ini cocok dengan batas asli di a UITextField, termasuk gradien dari atas ke bawah:

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];
Ini adalah gambar png yang saya gunakan, dan representasi jpg:

coderesizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Berfungsi bagus, tetapi warnanya harus a CGColor, bukan UIColor:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Saya yakin jawaban di atas adalah untuk versi Swift sebelumnya. Saya mencari di Google sedikit dan kode di bawah ini berfungsi untuk Swift 4. Hanya membagikannya untuk siapa pun yang dapat memperoleh manfaat.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Selamat Coding!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
untuk Pemrograman Swift, gunakan ini
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
ini sedekat yang saya bisa dari UITextField asli
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
}
Anda dapat menambahkan batas ke UITextView dari Storyboard - Identity Inspector - Atribut Waktu Proses yang Ditentukan Pengguna
Mulai iOS 8 dan Xcode 6, saya sekarang menemukan solusi terbaik adalah subclass UITextView dan menandai subclass sebagai IB_DESIGNABLE, yang akan memungkinkan Anda untuk melihat perbatasan di storyboard.
Tajuk:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Penerapan:
#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
Kemudian tarik keluar UITextView Anda di storyboard dan setel kelasnya ke BorderTextView
Hal yang membuatnya berhasil (selain mengikuti jawaban di sini) adalah menambahkan borderStyleatribut:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Saya memecahkan masalah ini di storyboard dengan menempatkan sepenuhnya dinonaktifkan di UIButtonbelakang UITextViewdan membuat warna latar belakang UITextViewclearColor. Ini berfungsi tanpa memerlukan kode atau paket tambahan.