web-dev-qa-db-ja.com

ボーダー付きUITextView

UITextViewの周りに薄い灰色の境界線が必要です。 Appleのドキュメントを読みましたが、プロパティが見つかりませんでした。ご協力ください。

122
Ali
#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.yourUITextview.layer.cornerRadius = 8; 
42
user542584

"tbComments"という名前のTextViewコントロールの周囲に境界線を追加するために使用したコードは次のとおりです。

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

そして、これは次のようなものです。

enter image description here

簡単です。

22
Mike Gledhill

UIImageViewのサブビューとしてUITextViewを追加します。これは、上から下へのグラデーションを含む、UITextFieldのネイティブ境界に一致します。

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];

これらは、私が使用しているpng画像とjpg表現です。

@ 1x

@ 2x

enter image description here

19
Ben Packard

うまく機能しますが、色はCGColorではなくUIColorにする必要があります。

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

for Swiftプログラミング、これを使用

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

これは元のUITextFieldからできる限り近い

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
}
2

上記の答えは、Swiftの以前のバージョンに対するものだと思います。私は少しグーグルで検索し、以下のコードはSwift 4.で動作します。

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

ハッピーコーディング!

2
IronmanX46

ほんの少しの追加。境界線を少し広くすると、テキストの左側と右側に干渉します。それを避けるために、次の行を追加しました。

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

(ここでの回答に従うことに加えて)動作させたのは、borderStyle属性を追加することです:

#import <QuartzCore/QuartzCore.h>
..

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

IOS 8およびXcode 6の時点で、最良の解決策はUITextViewをサブクラス化し、サブクラスをIB_DESIGNABLEとしてマークすることです。これにより、ストーリーボードで境界線を表示できます。

ヘッダ:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface BorderTextView : UITextView

@end

実装:

#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

次に、ストーリーボードでUITextViewをドラッグして、クラスをBorderTextViewに設定します。

0
mike

Swift 3では、次の2行を使用できます。

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0
0
Amr Angry