ipad流水布局及其旋转界面view间隔布局调整
?
控制器嵌套關系如下,ITGDealViewController的view是UI界面中Dock其中點擊按鈕彈出的一個子view
rootViewController == mianViewController --> UINavigationController -->ITGDealViewController -->UICollectionViewFlowLayout
?
*****************************************************************
?
?
ITGAppDelegate.m文件------------------------------中的設置根控制器
-----------------------------------------------------------------
//設置根控制器
self.window.rootViewController = [[ITGMainViewController alloc]init];
?
?
?
ITGMainViewController.m文件
-----------------------------------------------------------------
//創建ITGDealViewController
ITGDealViewController *vdeal = [[ITGDealViewController alloc]init];
[self addOneChildVc:deal];
?
-(void)addOneChildVc:(UIViewController *)vc
{
? ? //導航控制器UINavigationController中有其他四個子控制器
? ? UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
? ? //主控制器ITGMainViewController中有子控制器:導航控制器UINavigationController
? ? [self addChildViewController:nav];
?? ?
?? ?
?
ITGDealViewController.m文件
-----------------------------------------------------------------
?? ?
//重寫init方法
- (id)init
{
? ? //流水布局
? ? UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
? ? //每個格子大小
? ? layout.itemSize = CGSizeMake(250, 250);
? ? //設置每一行之間的距離
? ? layout.minimumLineSpacing = 20;
? ? //調用父類的構造方法
? ? if ([super initWithCollectionViewLayout:layout]) {
? ? }
}
?? ?
?
//ipad屏幕旋轉監聽方法:子控制器和根控制器有關聯才能知道屏幕旋轉了
? ? //旋轉后調用的方法
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
? ? //返回的是父類UICollectionViewLayout,子類是UICollectionViewFlowLayout,把返回的父類要強轉成我們要用上面的子類
? ? //取出布局
? ? UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
?? ?
? ? //設置collectionView內邊距 布局
? ? CGFloat paddingY =20;
? ? CGFloat paddingX = 40;
? ? layout.sectionInset = UIEdgeInsetsMake(paddingY, paddingX, paddingY, paddingX);
? ? //判斷橫豎屏
? ? if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))//在旋轉后當前橫屏
? ? {
? ? ? ? paddingX = (self.view.bounds.size.width - 3*layout.itemSize.width)/4;
? ? }else{
? ? ? ? paddingX = (self.view.bounds.size.width - 2*layout.itemSize.width)/3;
? ? }
? ? //添加動畫
? ? [UIView animateWithDuration:0.5 animations:^{
? ? ? ? //行之間
? ? ? ? layout.minimumLineSpacing = paddingY;
? ? }];
}
//即將旋轉調用的方法? 本例沒有有使用
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
?? ?
}
?
?? ?
//想一進界面就有這樣的效果,就在-(void)viewDidLoad或者- (void)viewDidAppear:(BOOL)animated調用設置界面布局效果的方法,具體調用哪個視情況而定
[self didRotateFromInterfaceOrientation:0];
//如本例適合調用的方法
- (void)viewDidAppear:(BOOL)animated
{
? ? [super viewDidAppear:animated];
? ? //調用設置界面布局效果的方法
? ? [self didRotateFromInterfaceOrientation:0];
}
?
?? ?
?? ?
?
轉載于:https://www.cnblogs.com/zuozeing/p/3563708.html
總結
以上是生活随笔為你收集整理的ipad流水布局及其旋转界面view间隔布局调整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据仓库之电商数仓-- 1、用户行为数据
- 下一篇: DB2性能调节工作总结