[ios] 둥근 사각형 텍스트 필드처럼 UITextview의 스타일을 지정하는 방법은 무엇입니까?

텍스트 작성기를 댓글 작성기로 사용하고 있습니다.

속성 관리자에서 테두리 스타일 속성과 같은 것을 찾을 수 없으므로 둥근 사각형을 사용할 수 있습니다 UITextField.

그래서, 질문은 : 나는 스타일을 어떻게 UITextView유사한을 UITextField둥근 RECT로?



답변

선택할 암시 적 스타일은 없으며 QuartzCore프레임 워크를 사용하여 약간의 코드를 작성해야합니다 .

//first, you
#import <QuartzCore/QuartzCore.h>

//.....

//Here I add a UITextView in code, it will work if it's added in IB too
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(50, 220, 200, 100)];

//To make the border look very close to a UITextField
[textView.layer setBorderColor:[[[UIColor grayColor] colorWithAlphaComponent:0.5] CGColor]];
[textView.layer setBorderWidth:2.0];

//The rounded corner part, where you specify your view's corner radius:
textView.layer.cornerRadius = 5;
textView.clipsToBounds = YES;

OS 3.0 이상에서만 작동하지만 이제는 사실상 플랫폼이라고 생각합니다.


답변

이 코드는 나를 위해 잘 작동했습니다.

    [yourTextView.layer setBackgroundColor: [[UIColor whiteColor] CGColor]];
    [yourTextView.layer setBorderColor: [[UIColor grayColor] CGColor]];
    [yourTextView.layer setBorderWidth: 1.0];
    [yourTextView.layer setCornerRadius:8.0f];
    [yourTextView.layer setMasksToBounds:YES];


답변

스위프트 3 버전

인터페이스 빌더에서 텍스트보기를 설정 한 후

@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    textView.layer.cornerRadius = 5
    textView.layer.borderColor = UIColor.gray.withAlphaComponent(0.5).cgColor
    textView.layer.borderWidth = 0.5
    textView.clipsToBounds = true
}

스위프트 2.2 버전

@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    textView.layer.cornerRadius = 5
    textView.layer.borderColor = UIColor.grayColor().colorWithAlphaComponent(0.5).CGColor
    textView.layer.borderWidth = 0.5
    textView.clipsToBounds = true
}


답변

편집 : 가져와야합니다

#import <QuartzCore/QuartzCore.h>

코너 반경을 사용합니다.

이것을 시도하십시오 그것은 확실히 작동합니다

UITextView* txtView = [[UITextView alloc] initWithFrame:CGRectMake(50, 50, 300, 100)];
txtView.layer.cornerRadius = 5.0;
txtView.clipsToBounds = YES;

Rob이 테두리 색상을 비슷하게 설정 UITextField하려면 다음 줄을 추가하여 테두리 너비를 2.0으로 변경하고 색상을 회색으로 변경 해야하는 경우

[textView.layer setBorderColor:[[[UIColor grayColor] colorWithAlphaComponent:0.5] CGColor]];
[textView.layer setBorderWidth:2.0];


답변

나는 실제 거래를 원했기 때문에 UIImageView의 하위보기로 추가 했습니다 UITextView. UITextField위에서 아래로의 그라디언트를 포함하여 의 기본 테두리와 일치합니다 .

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

내가 사용하는 이미지는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오
여기에 이미지 설명을 입력하십시오


답변

한 가지 해결책은 UITextView 아래에 UITextField추가 하고 UITextView배경을 투명하게 만들고에 대한 사용자 상호 작용을 비활성화하는 것 UITextField입니다. 그런 다음 코드에서 UITextField프레임을 다음과 같이 변경하십시오.

self.textField.frame = CGRectInset(self.textView.frame, 0, -2);

텍스트 필드와 모양이 정확히 같습니다.

Jon이 제안한 [UIViewController viewDidLayoutSubviews]대로이 코드 조각 을 iOS 5.0 이상에 넣어야합니다 .


답변

최상의 효과를 얻으려면 사용자 정의 (신축 가능한) 배경 이미지를 사용해야합니다. 이것 UITextField의 둥근 테두리가 그려지 는 방식이기도합니다 .