【问题标题】:UIPageController Subviews not showing animationUIPageController 子视图不显示动画
【发布时间】:2015-04-19 20:10:37
【问题描述】:

我有一个加载子视图的 UIPageViewController,我想每次在页面视图控制器上加载子视图时运行动画 到目前为止,视图加载正确,但动画不起作用 这是我的代码

内容视图类

import UIKit

class ContentPage1ViewController: UIViewController {
    @IBOutlet weak var houseImage: UIImageView!
    @IBOutlet weak var houseImage2: UIImageView!

override func viewDidLoad() {
    println("content view loaded")//THIS WORKS

    self.houseImage.alpha = 0
    self.houseImage.frame = CGRectMake(0, 20, 0, 0)


    UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0, options: .CurveEaseInOut | .Repeat, animations: {

        self.houseImage.alpha = 1
        self.houseImage.frame = CGRectMake(0, 0, 0, 0)

    }, completion: nil)

    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

UIPageViewController

import UIKit

class PageViewController1:         UIPageViewController,UIPageViewControllerDataSource {

var pageTitles:NSArray!
var pageViewController:UIPageViewController!
var index:Int = 1

override func viewDidLoad() {
    //Storyboard id of content pages
    self.pageTitles = NSArray(objects:"PAGE1","PAGE2")
    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("onboardingPageViewController") as! UIPageViewController
    self.pageViewController.dataSource = self
    var startVc = self.storyboard?.instantiateViewControllerWithIdentifier("contentViewController1") as! UIViewController
    var viewControllers = NSArray(object: startVc)
    self.pageViewController.setViewControllers(
        viewControllers as NSArray as [AnyObject], direction: .Forward, animated: true, completion: nil)

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)


    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func getContentAtIndex(index:Int)->UIViewController{
   return self.storyboard?.instantiateViewControllerWithIdentifier("contentViewController\(index)") as! UIViewController
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
    if(index == NSNotFound)
    {
        return nil
    }

    if(index == self.pageTitles.count)
    {
        return nil
    }
    index++

    return getContentAtIndex(index)

}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {

    if(index == 1 || index == NSNotFound)
    {
        return nil
    }

    index--
    return getContentAtIndex(index)
}

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    return self.pageTitles.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return 0
}
}

【问题讨论】:

  • 您最终解决了问题吗?除非我转到另一个页面并返回,否则我的动画不起作用:(

标签: ios objective-c swift


【解决方案1】:

首先,在viewDidLoad 中,超级调用super.viewDidLoad() 属于该方法的开头,而不是结尾。 然后插入:

override func viewDidAppear() {
        super.viewDidAppear();
        self.houseImage.alpha = 0
        self.houseImage.frame = CGRectMake(0, 20, 0, 0)


        UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 0, options: .CurveEaseInOut | .Repeat, animations: {

               self.houseImage.alpha = 1
               self.houseImage.frame = CGRectMake(0, 0, 0, 0)

        }, completion: nil)
}

【讨论】:

  • 谢谢!,它可以工作,但在我更改页面并返回之后
  • 您是否也将超级调用复制到了开头?并且不要忘记 viewdidappear 中的超级调用......但如果它有效,请不要忘记接受和/或投票;-)
猜你喜欢
  • 2012-01-31
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多