내 자신의 색상을 UITextField 테두리로 설정하고 싶습니다. 그러나 지금까지 경계선 스타일 만 변경하는 방법을 알 수있었습니다.
background 속성을 사용하여 다음과 같은 방법으로 배경색을 설정했습니다.
self.textField.backgroundColor = textFieldColor;
그러나 UITextField 테두리의 색상도 변경해야합니다. 그리고 내 질문은 테두리 색상을 변경하는 방법에 관한 것입니다.
내 자신의 색상을 UITextField 테두리로 설정하고 싶습니다. 그러나 지금까지 경계선 스타일 만 변경하는 방법을 알 수있었습니다.
background 속성을 사용하여 다음과 같은 방법으로 배경색을 설정했습니다.
self.textField.backgroundColor = textFieldColor;
그러나 UITextField 테두리의 색상도 변경해야합니다. 그리고 내 질문은 테두리 색상을 변경하는 방법에 관한 것입니다.
답변:
QuartzCore
수업 중 프레임 워크 가져 오기 :
#import <QuartzCore/QuartzCore.h>
테두리 색상을 변경하려면 다음 코드 스 니펫을 사용하십시오 (빨간색으로 설정합니다).
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와 같은 웹 사이트를 방문하여 초보자 튜터를 읽으십시오.
이 시도:
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];
약간의 코딩으로 스토리 보드를 사용하여 모든보기 (또는 UIView 하위 클래스)의 borderColor 를 설정할 수도 있으며이 방법은 여러 UI 객체에서 테두리 색상을 설정하는 경우 매우 유용 할 수 있습니다.
다음은이를 달성하는 단계입니다.
추신 : 카테고리에는 속성을 저장할 수 없습니다. '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
스위프트 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)
.