Mar*_*kon 7 uiviewcontroller uikit autolayout
我想将 SwiftUI 视图放入UIScrollViewusing中UIHostingController。然而,即使我使用自动布局来约束视图,我的按钮“切换”似乎在动画期间在视图中跳跃。
下面的视频说明了动画时按钮文字跳转的问题
struct ExpandableView: View {
@State var expanded = false
var body: some View {
VStack {
Button(action: { withAnimation {expanded.toggle() }}) {
Text("toggle")
}
if expanded {
Text("long text long text long text long text long text long text long text long text long text long text long textlong text long text long text long text long text long text long text long text long text long text long textlong text long text long text long text long text long text long text long text long text long text long text")
.font(.custom("x", fixedSize: 55))
}
}
}
}
class ViewController: UIViewController {
var scrollView: UIScrollView = {
let sv = UIScrollView()
sv.isDirectionalLockEnabled = true
return sv
}()
var contentView: UIView = {
let view = UIView()
return view
}()
let controller = UIHostingController(rootView: ExpandableView())
private var heightConstraint: NSLayoutConstraint?
override func viewDidLoad() {
super.viewDidLoad()
scrollView.frame = view.frame
scrollView.contentSize = CGSize(width: view.bounds.size.width, height: view.bounds.size.height + 200)
view.addSubview(scrollView)
scrollView.addSubview(contentView)
contentView.frame = scrollView.frame
contentView.bounds = scrollView.bounds
controller.view.backgroundColor = .yellow
contentView.addSubview(controller.view)
controller.view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
controller.view.topAnchor.constraint(equalTo: contentView.safeAreaLayoutGuide.topAnchor),
controller.view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
controller.view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
])
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.contentSize = CGSize(width: view.bounds.width, height: 100 + controller.view.intrinsicContentSize.height)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |