我正在尝试解决IPAD上的以下问题!
我想要一个动态创建的PagerViewController,其中1到n个ViewController作为孩子!
这个问题我解决了:
func initialize() {
orderedViewControllers = []
let iCountPerPages = iCols*iRows
var oViewController:UIPagerPage? = nil
for oLayoutObject:LayoutObjectDto in lLayoutObject {
if oViewController == nil || oViewController?.lLayoutObjects.count == iCountPerPages {
if oViewController != nil {
orderedViewControllers.append( oViewController! )
}
oViewController = self.storyboard?.instantiateViewControllerWithIdentifier("UIPagerPage") as? UIPagerPage
oViewController?.iRows = self.iRows
oViewController?.iCols = self.iCols
}
if oLayoutObject.isDataSource() {
oViewController?.lLayoutObjects.append(oLayoutObject)
}
}
dispatch_async(dispatch_get_main_queue(), {
self.setViewControllers([self.orderedViewControllers.first!],
direction: .Forward,
animated: true,
completion: nil)
});
}
所以现在是第一个问题:
我希望UIPagerPage在横向上获得4 Cols ans 2 Rows和在纵向上获得2行x 2 Cols的布局。
通过大小类这个问题是不可解决的? 我通过以下方式指出行数和列数来解决这个问题:
enum ScreenTyp {
case PHONE_LANDSCAPE, PHONE_PORTRAIT, PAD_LANDSCAPE, PAD_PORTRAIT
static func getScreenTyp() -> ScreenTyp {
if(UIDevice.currentDevice().userInterfaceIdiom == .Phone) {
//Phone
if UIDevice.currentDevice().orientation==UIDeviceOrientation.Portrait {
//Portrait
return .PHONE_PORTRAIT
} else {
//Landscape
return .PHONE_LANDSCAPE
}
} else {
//Pad
if UIDevice.currentDevice().orientation==UIDeviceOrientation.Portrait {
//Portrait
return .PAD_PORTRAIT
} else {
//Landscape
return .PAD_LANDSCAPE
}
}
}
static func isOrientationIsLandscape() -> Bool {
return UIApplication.sharedApplication().statusBarOrientation.isLandscape
}
static func isOrientationIsPortrait() -> Bool {
return UIApplication.sharedApplication().statusBarOrientation.isPortrait
}
}
从UIPagerPage动态生成布局。
所以但是在旋转时(从横向到纵向)它正在旋转,但布局仍然是4x2而不是2x2。
所以现在我试图通过以下方式重新加载旋转的所有页面:
override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
self.initialize()
}
有了这个功能,我得到一个NSExeption,我想因为动画仍在运行,这个功能效果更好:
override func didRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation) {
self.initialize()
}
但仍会显示旋转前显示的页面!
感谢' S