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 TextView
kontrol 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 UIImageView
sebagai 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:
code
resizableImageWithCapInsets: 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 borderStyle
atribut:
#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 UIButton
belakang UITextView
dan membuat warna latar belakang UITextView
clearColor. Ini berfungsi tanpa memerlukan kode atau paket tambahan.