iOS Swift Scrollview以编程方式设置框架位置

时间:2017-04-20 09:09:51

标签: ios swift3 uiscrollview cgrect cgrectmake

我的应用中有滚动视图。默认情况下,我的滚动视图的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)
   }
}

但是这段代码没有用。

2 个答案:

答案 0 :(得分:1)

问题很简单你的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)
    }

   }

}

答案 1 :(得分:1)

我们无法在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)
     }
}