2013-11-28 2 views
3

У меня есть UITextView, где я устанавливаю ширину границы, цвет границы и свойства углового радиуса на своем слое, а внешний вид отлично смотрится. Тем не менее, внутренняя часть границы не имеет закругленных углов, таких как внешняя часть, и выглядит смешно. Есть ли способ обойти внутренние углы границы?Радиус угла внутренней границы CALayer

Edit: Вот код, который я использовал в initWithFrame: метод:

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.backgroundColor = UIColorFromRGB(0xdedede); 
     self.layer.cornerRadius = kTextFieldCornerRadius; 
     self.layer.borderColor = UIColorFromRGB(0xD4974C).CGColor; 
     self.layer.borderWidth = 3.0f; 
     self.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f]; 
     [self setClipsToBounds:YES]; 
     [self.layer setMasksToBounds:YES]; 
    } 
    return self; 
} 

А вот скриншот того, что он выглядит сейчас:

Обратите внимание внешние углы закруглены, как и ожидалось, но внутренние углы границы заострены, а не округлены. Вот что я пытаюсь исправить. Спасибо за вашу помощь!

+4

Пожалуйста, покажите свой код и снимок текста. –

ответ

9

Попробуйте установить это,

[txtView  setClipsToBounds:YES]; //Confirms subviews are confined to the bounds of the view 
[txtView.layer setMasksToBounds:YES]; //Confirms sublayers are clipped to the layer’s bounds 

EDIT

Вероятно, значение kTextFieldCornerRadius устанавливается на низкий в вашем случае.

Если я установил kTextFieldCornerRadius = 7;, я могу получить отличный результат.

enter image description here

попытка увеличить значение радиуса.

+0

Пробовал, не повезло. Смотрите код и снимок экрана выше. – Mason

+0

@Mason посмотреть обновление –

+0

Я пробовал, не работал. :( –

1

Импорт QuartzCore рамки и добавьте следующие строки кода:

ЦЕЛЬ - C

UIView *yourView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 430)]; 
yourView.layer.borderColor = [UIColor redColor].CGColor; 
yourView.layer.borderWidth = 10.0f; 
yourView.layer.cornerRadius = 20.0f; 

[yourView setClipsToBounds:YES]; 
[yourView.layer setMasksToBounds:YES]; 

СВИФТ - 3.0.1 (площадка код)

//: Playground - noun: a place where people can play 

import UIKit 
import PlaygroundSupport 
import QuartzCore 

let containerView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 375.0, height: 100.0)) 

containerView.backgroundColor = UIColor.white 
containerView.layer.borderWidth = 10 
containerView.layer.borderColor = UIColor.red.cgColor 
containerView.clipsToBounds = true 
containerView.layer.masksToBounds = true 
containerView.layer.cornerRadius = 20 

PlaygroundPage.current.liveView = containerView 
PlaygroundPage.current.needsIndefiniteExecution = true 

ВЫВОД:

OUTPUT :

ВАЖНО:

Убедитесь, что cornerRadius больше borderWidth. Иначе вы не сможете увидеть разницу.

Смежные вопросы