iOS/UIKIT

StackView에는 그림자 효과를 넣을 수 없다?

밤새는 탐험가89 2024. 10. 14. 13:03
UIStackView는 기본적으로 내부적으로는 레이아웃 전용 뷰이기 때문에, layer 속성을 통한 그림자, 모서리 둥글기 등의 효과가 적용되지 않습니다. UIStackView는 자체적으로 콘텐츠를 그리지 않기 때문에, layer 속성은 그 영향력을 미치지 못합니다.

 

 

해결 방법:

1. UIStackView를 감싸는 UIView에 그림자 적용:

 그림자를 적용하려면, UIStackView를 감싸는 별도의 UIView를 추가하고, 그 UIView에 그림자 속성을 적용하는 방법이 필요합니다. 이렇게 하면 UIView가 레이아웃 및 시각적 효과를 담당하고, UIStackView는 그 안에서 레이아웃만 담당하게 됩니다.

var containerView: UIView = {
    let view = UIView()
    view.translatesAutoresizingMaskIntoConstraints = false
    view.layer.cornerRadius = 10
    view.layer.shadowColor = UIColor.black.cgColor
    view.layer.shadowOffset = CGSize(width: 0, height: 5)
    view.layer.shadowRadius = 20
    view.layer.shadowOpacity = 0.3
    return view
}()

lazy var profileStackView: UIStackView = {
    let stackView = UIStackView()
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.axis = .horizontal
    stackView.spacing = 10
    stackView.distribution = .fillEqually
    return stackView
}()
 

2. 사용하는 뷰에 추가:

 UIStackView를 containerView에 추가하고, containerView에 대한 오토레이아웃 제약 조건을 설정하세요.

 

containerView.addSubview(profileStackView)
NSLayoutConstraint.activate([
    profileStackView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
    profileStackView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
    profileStackView.topAnchor.constraint(equalTo: containerView.topAnchor),
    profileStackView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])