试图按钮添加到UIPageViewController,但按钮不会显示出来,即使他们在视图层次
问题描述:
这里是我到目前为止的代码:试图按钮添加到UIPageViewController,但按钮不会显示出来,即使他们在视图层次
class WarmPushPageViewController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
// Do any additional setup after loading the view.
let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController")
setViewControllers([feedViewController], direction: .forward, animated: false, completion: nil)
let hashtagsButton = UIButton(frame: CGRect(x: 8, y: self.view.frame.height - 30, width: 70, height: 20))
hashtagsButton.setTitle("Hashtags", for: .normal)
hashtagsButton.tintColor = UIColor.blue
self.view.addSubview(hashtagsButton)
self.view.bringSubview(toFront: hashtagsButton)
let feedButton = UIButton(frame: CGRect(x: self.view.frame.width/2, y: self.view.frame.height - 30, width: 50, height: 20))
feedButton.setTitle("Feed", for: .normal)
feedButton.tintColor = UIColor.blue
self.view.addSubview(feedButton)
self.view.bringSubview(toFront: feedButton)
let userButton = UIButton(frame: CGRect(x: self.view.frame.width-65, y: self.view.frame.height - 30, width: 50, height: 20))
userButton.setTitle("User", for: .normal)
userButton.tintColor = UIColor.blue
self.view.addSubview(userButton)
self.view.bringSubview(toFront: userButton)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
extension WarmPushPageViewController: UIPageViewControllerDataSource {
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
if let _ = viewController as? UserViewController {
let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController")
return feedViewController
} else if let _ = viewController as? FeedViewController {
let hashtagsViewController = storyboard!.instantiateViewController(withIdentifier: "HashtagsViewController")
return hashtagsViewController
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
if let _ = viewController as? HashtagsViewController {
let feedViewController = storyboard!.instantiateViewController(withIdentifier: "FeedViewController")
return feedViewController
} else if let _ = viewController as? FeedViewController {
let userViewController = storyboard!.instantiateViewController(withIdentifier: "UserViewController")
return userViewController
}
return nil
}
}
出于某种原因,一旦我得到的利润最终页面,标签的边缘显示:
标签也存在于我的视图层次,但我的假设是,这个问题可以躺在这里的某个地方:
最终目标是使用Sketch资源创建我自己的自定义按钮,其中在特定按钮上的内容会延伸到各自的页面。
答
- 在viewDidLoad视图帧的时间是实际的界面生成器默认帧。所以按钮可能会超出界限。尝试通过设置中心框按钮将可见或添加viewDidLoad中的按钮并更新viewDidLayoutSubviews方法中的按钮框架。
- UIPageViewController包含一个手势识别器。所以添加按钮也没用。 建议的方法来实现您的需求 而不是将UIButton添加到UIPageViewController,创建一个超级视图控制器(UIViewController)包含子视图作为UIButtons和UIPageViewController。
参考链接:https://spin.atomicobject.com/2016/02/11/move-uipageviewcontroller-dots/
谢谢!将尝试这一点,让你知道:) – srinitude