본문 바로가기
UIKIT

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

by 밤새는 탐험가89 2024. 10. 14.
728x90
SMALL
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)
])
728x90
LIST