我想刷卡功能添加到我的viewcontrollers之間的應用程序和刷卡在本教程中添加:https://www.youtube.com/watch?v=3jAlg5BnYUU 本教程的源代碼是在這裏:https://www.veasoftware.com/posts/swipe-navigation-in-swift-xcode-7-ios-9-tutorial不能viewcontroller's幀到滾動視圖在另一個視圖 - 控制
在該指南中,他們使用的是nib/xib
文件,它們與相應的視圖控制器一起創建,然後用它們在ViewController的構造函數中調用。
我已經完成了相同的工作,並且在教程中也是如此。但我也想使用沒有xib
文件的ViewController,因爲它在我的故事板上。該視圖控制器在我的代碼中被稱爲ViewController2
,並且這是我滑動時唯一沒有出現在滾動視圖中的視圖控制器。另外兩個是因爲我在構造函數調用中調用xibName
,但ViewController2沒有xib
文件,因爲它位於我的故事板上。
那麼如何將它添加到滾動視圖,以便它在我滑動時出現?
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let vc0 = ViewController0(nibName: "ViewController0", bundle: nil)
self.addChildViewController(vc0)
self.scrollView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
let vc1 = ViewController1(nibName: "ViewController1", bundle: nil)
var frame1 = vc1.view.frame
frame1.origin.x = self.view.frame.size.width
vc1.view.frame = frame1
self.addChildViewController(vc1)
self.scrollView.addSubview(vc1.view)
vc1.didMoveToParentViewController(self)
let vc2 = ViewController2()
var frame2 = vc2.view.frame
frame2.origin.x = self.view.frame.size.width
vc2.view.frame = frame2
self.addChildViewController(vc2)
self.scrollView.addSubview(vc2.view)
vc2.didMoveToParentViewController(self)
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height - 66);
}
謝謝!除了ViewController2的視圖的框架尺寸是其他ViewController的框架尺寸(ViewController0.view.frame和ViewController1.view.frame)的一半外,其他工作方式都是有效的。我通過設置'frame2.size.width = frame1.width'解決了這個問題。爲什麼幀尺寸是其他幀尺寸50%的默認值? – Rox
@Rox,這可能是因爲你有**調整視圖從NIB **檢查你的Main.storyboard文件中的'ViewController2'(我相信這是默認的)。要檢查轉到你的Main.storyboard文件,選擇ViewController2,轉到屬性檢查器,並在「View Controller - > Layout」部分下面,如果選中了,則取消選中**調整從NIB **視圖。正如這個問題所示:http://stackoverflow.com/questions/14520561/wrong-frame-value-while-accessing-the-view-from-storyboard-in-ios – Ike10
哦!情況就是這樣!謝謝! :-) – Rox