developer tip

모서리가 둥근 CGRect (Swift)로 UIImage / -View를 만드는 방법

copycodes 2020. 12. 26. 15:39
반응형

모서리가 둥근 CGRect (Swift)로 UIImage / -View를 만드는 방법


Swift iOS Playground에서 둥근 모서리가있는 UIImageView를 어떻게 만드나요?
내부는 색상으로 채워야합니다.


let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true

결과:

여기에 이미지 설명 입력


신속하게 둥근 원형 이미지 프레임의 경우 저에게 효과적이었습니다.

    self.profileImageView.image =  UIImage(named:"profileUser")
    self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
    self.profileImageView.clipsToBounds = true

그리고 그림자를 추가하려면 :

    self.profileImageView.layer.masksToBounds = NO;
    self.profileImageView.layer.cornerRadius = 8;
    self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
    self.profileImageView.shadowRadius = 5;
    self.profileImageView.shadowOpacity = 0.5;

이것을 시도해보십시오.

self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true

각 UIView 에 바인딩반경과 마스크를 작성하는 데 지쳤습니다 . 그래서 UIView에 대해 다음과 같은 확장을 만들었습니다. 모든 UIView 하위 클래스에서 작동해야하지만 테스트하지는 않았습니다. 물론 사용하는 특정 뷰에 대해 확장 범위를 좁힐 수 있습니다.

extension UIView {      
    func setRadius(radius: CGFloat? = nil) {
        self.layer.cornerRadius = radius ?? self.frame.width / 2;
        self.layer.masksToBounds = true;
    }
}

특정 값을 전달하지 않으면 기본적으로 뷰의 절반 너비로 설정됩니다.


스위프트 3.0, 4.0

스토리 보드를 사용하려는 경우. 이것을 적용하고 "Clip to bounds"가 활성화되어 있는지 확인합니다.

여기에 이미지 설명 입력


각을 반올림하는 옵션을 원하면 값을 UIImageView확인 clip to bounds하고 설정하는 것을 잊지 않고이 코드를 프로젝트에 복사 할 수 있습니다.true

import UIKit

@IBDesignable
extension UIImageView
{
    private struct AssociatedKey
    {
        static var rounded = "UIImageView.rounded"
    }

    @IBInspectable var rounded: Bool
    {
        get
        {
            if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool
            {
                return rounded
            }
            else
            {
                return false
            }
        }
        set
        {
            objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
            layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2
        }
    }
}

스크린 샷


Identity inspector의 User Defined Runtime Attributes 섹션 에서 layer.cornerRadius = 10설정하면 테이블 셀과 같은 반복 가능한 요소에서도 작동합니다.


Swift 5.0 :

개인적으로 선호하는 것은 이와 같은 특정 변경 사항에 대해 신속한 파일을 추가하는 것입니다. 그런 다음 변경하려는 요소의 하위 클래스 인 "RoundCorner"와 같은 클래스를 만듭니다 (이 경우 View 요소). 그런 다음 개별 설정을 재정의합니다.

class RoundCorner: UIView {
override func draw(_ rect: CGRect) {
    self.layer.cornerRadius = 10 // change this number to get the corners you want
    self.layer.masksToBounds = true
    }
}

그런 다음 변경하려는 요소를 선택하고 사용자 지정 클래스를 이전에 만든 클래스로 설정하기 만하면됩니다.

여기 스크린 샷을보세요

참조 URL : https://stackoverflow.com/questions/25476139/how-do-i-make-an-uiimage-view-with-rounded-corners-cgrect-swift

반응형