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)
])
'iOS > UIKIT' 카테고리의 다른 글
앱의 데이터 갱신하려면 어떻게 할까? (0) | 2024.10.16 |
---|---|
collectionView.reloadData()는 어디에 넣을까? - 추가 (2) | 2024.10.14 |
MVC 패턴을 위배하지 않고, 서로 다른 View의 오토레이아웃 설정방법 (0) | 2024.10.11 |
서치바를 눌렀을 때 서치바 y축 위치를 조절하는 방법 (1) | 2024.10.11 |
왜 서치바 heightAnchor 의 값을 변경했는데.. 왜 높이 조절 안됨? (3) | 2024.10.11 |