iOS Swift Scrollview 以编程方式设置框架位置
iOS Swift Scrollview Set Frame Position Programmatically
我的应用程序中有滚动视图。默认情况下,我的滚动视图的 y
位置是 80
。在某些位置,我需要将滚动视图的 y
位置移动到 0
。这是代码
@IBOutlet weak var ScrollView: UIScrollView!
override func viewDidLoad()
{
super.viewDidLoad()
self.ScrollView.delegate = self
if(Position == "changed")
{
self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
else
{
self.ScrollView.frame = CGRect(x: 0, y: 80, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
}
但此代码无效。
问题很简单,您的 VC.view 未在 Viewdidload 中更新,因此您需要在此处移动 Viewdidappear 上的 UI 更新或更新主线程中的 UI
默认情况下,您的 self.ScrollView.frame
是在 O 位置开始的,所以只检查 !=
override func viewDidLoad()
{
super.viewDidLoad()
self.ScrollView.delegate = self
//self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
if(Position != "changed")
{
DispatchQueue.main.async {
self.ScrollView.frame = CGRect(x: 0, y: 80, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
}
}
我们将无法在 viewDidLoad()
中设置滚动视图位置,因此请在 viewDidAppear()
中添加这些代码。最终代码在这里
override func viewDidAppear(_ animated: Bool)
{
DispatchQueue.main.async
{
self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height + 80)
}
}
我的应用程序中有滚动视图。默认情况下,我的滚动视图的 y
位置是 80
。在某些位置,我需要将滚动视图的 y
位置移动到 0
。这是代码
@IBOutlet weak var ScrollView: UIScrollView!
override func viewDidLoad()
{
super.viewDidLoad()
self.ScrollView.delegate = self
if(Position == "changed")
{
self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
else
{
self.ScrollView.frame = CGRect(x: 0, y: 80, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
}
但此代码无效。
问题很简单,您的 VC.view 未在 Viewdidload 中更新,因此您需要在此处移动 Viewdidappear 上的 UI 更新或更新主线程中的 UI
默认情况下,您的 self.ScrollView.frame
是在 O 位置开始的,所以只检查 !=
override func viewDidLoad()
{
super.viewDidLoad()
self.ScrollView.delegate = self
//self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
if(Position != "changed")
{
DispatchQueue.main.async {
self.ScrollView.frame = CGRect(x: 0, y: 80, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height)
}
}
}
我们将无法在 viewDidLoad()
中设置滚动视图位置,因此请在 viewDidAppear()
中添加这些代码。最终代码在这里
override func viewDidAppear(_ animated: Bool)
{
DispatchQueue.main.async
{
self.ScrollView.frame = CGRect(x: 0, y: 0, width: self.ScrollView.frame.size.width, height: self.ScrollView.frame.size.height + 80)
}
}