自分の色をUITextFieldボーダーに設定したいのですが。しかし、これまでのところ、境界線のスタイルのみを変更する方法を見つけることができました。
backgroundプロパティを使用して、次のように背景色を設定しました。
self.textField.backgroundColor = textFieldColor;
しかし、UITextFieldの境界線の色も変更する必要があります。そして、私の質問は、境界線の色を変更する方法についてでした。
自分の色をUITextFieldボーダーに設定したいのですが。しかし、これまでのところ、境界線のスタイルのみを変更する方法を見つけることができました。
backgroundプロパティを使用して、次のように背景色を設定しました。
self.textField.backgroundColor = textFieldColor;
しかし、UITextFieldの境界線の色も変更する必要があります。そして、私の質問は、境界線の色を変更する方法についてでした。
回答:
QuartzCore
あなたのクラスにフレームワークをインポートする:
#import <QuartzCore/QuartzCore.h>
境界線の色を変更するには、次のコードスニペットを使用します(私はそれをredColorに設定しています)。
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES;
textField.layer.borderColor=[[UIColor redColor]CGColor];
textField.layer.borderWidth= 1.0f;
元のレイアウトに戻すには、境界線の色をクリアカラーに設定するだけです。
serverField.layer.borderColor=[[UIColor clearColor]CGColor];
迅速なコードで
textField.layer.borderWidth = 1
textField.layer.borderColor = UIColor.whiteColor().CGColor
viewDidLoad
これらのプロパティをself.myTextField.layer.cornerRadius
変更するなどして変更します。これらの変更は、アプリを起動するとすぐに有効になりますが、ストーリーボードに変更を表示することはできません。これが意味をなさない場合は、Ray WenderlichなどのWebサイトにアクセスして、初心者向けのチュートリアルを読むことをお勧めします。
これを試して:
UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)];
theTextFiels.borderStyle=UITextBorderStyleNone;
theTextFiels.layer.cornerRadius=8.0f;
theTextFiels.layer.masksToBounds=YES;
theTextFiels.backgroundColor=[UIColor redColor];
theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor];
theTextFiels.layer.borderWidth= 1.0f;
[self.view addSubview:theTextFiels];
[theTextFiels release];
そしてQuartzCoreをインポートします:
#import <QuartzCore/QuartzCore.h>
この質問はGoogle検索でかなり高く表示され、ほとんどの部分で機能しました。Salman Zaidiの答えがiOS 7に対して部分的に正しいことがわかりました。
「元に戻す」コードに変更を加える必要があります。私は元に戻すための以下が完全に機能することを発見しました:
textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;
これはiOS 7の変更が原因である可能性が最も高いと理解しています。
受け入れられた回答からこのアクションを簡略化するために、カテゴリを作成することもできますUIView
(これはテキストフィールドだけでなく、UIViewのすべてのサブクラスで機能するためです:
UIView + Additions.h:
#import <Foundation/Foundation.h>
@interface UIView (Additions)
- (void)setBorderForColor:(UIColor *)color
width:(float)width
radius:(float)radius;
@end
UIView + Additions.m:
#import "UIView+Additions.h"
@implementation UIView (Additions)
- (void)setBorderForColor:(UIColor *)color
width:(float)width
radius:(float)radius
{
self.layer.cornerRadius = radius;
self.layer.masksToBounds = YES;
self.layer.borderColor = [color CGColor];
self.layer.borderWidth = width;
}
@end
使用法:
#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
width:1.0f
radius:8.0f];
角が丸いTextFieldを使用する場合は、次のコードを使用します。
self.TextField.layer.cornerRadius=8.0f;
self.TextField.layer.masksToBounds=YES;
self.TextField.layer.borderColor=[[UIColor redColor]CGColor];
self.TextField.layer.borderWidth= 1.0f;
境界線を削除するには:
self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];
Swift 5.0のアップデート
textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0
ボーダの色任意のビュー(またはUIViewサブクラス)のは、少しのコーディングでストーリーボードを使用して設定することもできます。この方法は、複数のUIオブジェクトで境界線の色を設定する場合に非常に便利です。
以下はそれを達成する方法のステップです、
PS:カテゴリにプロパティを格納することはできません。'borderUIColor'は計算されたプロパティとして使用されます。これは、私たちが焦点を当てていることを達成するための参照としてのみ使用されます。
以下のコードサンプルをご覧ください。
目的C:
インターフェースファイル:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (BorderProperties)
// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;
@end
実装ファイル:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Swift 2.0:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.CGColor
}
get {
return UIColor(CGColor: self.borderColor!)
}
}
}
最後に、ストーリーボード/ XIBに移動し、残りの手順に従います。
境界線の色を表示するには、layer.borderWidthプロパティの値を少なくとも1 に設定する必要があります。
ビルドして実行します。ハッピーコーディング。:)
これがSwiftの実装です。必要に応じて、他のビューで使用できるように拡張を行うことができます。
extension UIView {
func addBorderAndColor(color: UIColor, width: CGFloat, corner_radius: CGFloat = 0, clipsToBounds: Bool = false) {
self.layer.borderWidth = width
self.layer.borderColor = color.cgColor
self.layer.cornerRadius = corner_radius
self.clipsToBounds = clipsToBounds
}
}
次のように呼び出します
email.addBorderAndColor(color: UIColor.white, width: 0.5, corner_radius: 5, clipsToBounds: true)
。