UIlabel layer.cornerRadius가 iOS 7.1에서 작동하지 않습니다


190

현재 속성이있는 UILabel을보고 있습니다. addMessageLabel.layer.cornerRadius = 5.0f; iOS 7.0이 설치된 장치에서 모서리가 둥근 있습니다. iOS 7.1이 설치된 기기에는 둥근 모서리가 없습니다.

이것은 iOS 7.1의 버그입니까?

답변:


491

속성 clipsToBounds을 true로 설정

addMessageLabel.clipsToBounds = true

3
왜 iOS 7에서는 그렇게하지 않아도되는지, iOS 7.1에서는해야하는지 잘 모르겠지만 작동했습니다! 감사합니다
Mike V

11
아니요, 이상하지 않습니다 ... 단지 "진행"... <humf>, UILabel의 clipsToBounds는 대부분의 다른 UIView와 마찬가지로 FALSE로 기본 설정되어 있습니다. 애플은 아마도 일관된 내용을 만들기 위해 노력하고있다. 나도 같은 문제가 있었다.
Leslie Godwin

2
@ChristopherKing 나는 이것에 관한 문서를 찾을 수 없었지만 이것은 내 시나리오에서도 효과가 있었다. 놀랍게도 :)
Raheel Sadiq

3
스택 오버플로 개발자에게 감사합니다.
scrrr

1
고마워 친구 당신은 내 시간을 절약했습니다 (Y).
Akhtar

66

코너 반경을 설정하는 가장 좋은 방법은 다음과 같습니다.

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

"클립 서브 뷰"가 체크되어 있는지 확인하십시오 :

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

"Clip Subviews"를 확인하는 것은 코드와 같습니다 addMessageLabel.clipsToBounds = YES;.


확실히, 가장 쉬운 방법
Mário Carvalho

이것이 가장 좋은 방법입니다. iOS 8+ 및 xcode 7.2에서 테스트되었습니다.
lifeisfoo

누군가가 이것을 찾고 여기에 와서 작동하지 않으면 : "cornerRadius"속성을 넣으면 iOS10 이상에서 작동합니다. iOS9에 그것은 "layer.cornerRadius"이어야한다
나단 바레토

clipToBounds는 사용자 정의 런타임 속성 (layer.cornerRadius와 동일)에서도 설정할 수 있습니다. 키 경로 여야합니다. 경로 : clipsToBounds, 유형 : 부울, 값 : true
Chuy47

24

다음을 시도하십시오.

[[addMessageLabel layer] setCornerRadius:5.0f];
[[addMessageLabel layer] setMasksToBounds:YES];

//or
[addMessageLabel setClipsToBounds:YES];

빠른

addMessageLable.layer.cornerRadius = 5.0
addMessageLable.layer.masksToBounds = true

//or
addMessageLable.layer.clipsToBounds = true

5

내 문제는 조금 달랐습니다.

나는 동안 btn.clipsToBounds = true

나는 설정하지 않았다 :

btn.layer.cornerRadius = 20

화면 크기가 다르기 때문입니다. 대신 나는 대답을 따르고 했다 :

override func layoutSubviews() {
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

추가하는 것을 잊었 기 때문에 작동하지 않았습니다 super.layoutSubviews(). 올바른 코드는 다음과 같습니다.

override func layoutSubviews() {
    super.layoutSubviews()
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

고마워.이 답변 만 나를 위해 일했다. 스위프트 3, Xcode 8.3.3
Skywalker

3

나는 아래의 것을 시도했고 성공적인 결과를 얻었다.

yourlabelname.layer.cornerRadius = 10.0f;
[yourlabelname setClipsToBounds:YES];

당신을 방해하는 다른 것이 있습니까?


iOS 7.1 이전 clipsToBounds에는 기본값이로 설정 YES되었으므로 [yourlabelname setClipsToBounds:YES];원래 코드에 해당 행 이 없었습니다.
Mike V

0
 //works perfect in Swift 2.0 for a circular or round image          


@IBOutlet var theImage: UIImageView!
        override func viewDidLoad() {
            super.viewDidLoad()
    //Make sure the width and height are same
            self.theImage.layer.cornerRadius = self.theImage.frame.size.width / 2
            self.theImage.layer.borderWidth = 2.0
            self.theImage.layer.borderColor = UIColor.whiteColor().CGColor
            self.theImage.clipsToBounds = true

        }

0
yourlabelname.layer.cornerRadius = yourlabelname.frame.size.width/2;
[yourlabelname setClipsToBounds:YES];

적절한 배포 대상을 확인하고 있는지 확인하십시오.


0

UIView의 확장으로 다음 코드를 추가하십시오.

//// Story board Extra Feature for create border radius, border width and border Color
extension UIView {
    /// corner radius
    @IBInspectable var borderColor: UIColor? {
        set {
            layer.borderColor = newValue!.cgColor
        }
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            } else {
                return nil
            }
        }
    }
    @IBInspectable var borderWidth: CGFloat {
        set {
            layer.borderWidth = newValue
        }
        get {
            return layer.borderWidth
        }
    }
    @IBInspectable var cornerRadius: CGFloat {
        set {
            layer.cornerRadius = newValue
            clipsToBounds = newValue > 0
        }
        get {
            return layer.cornerRadius
        }
    }
}

그런 다음 인터페이스 빌더 자체에서 다음 속성을 얻습니다.!

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.