iOS添加子视图控制器

  • Post author:
  • Post category:其他


先编译几个子视图控制器



//*


子视图控制器


*/


@property


(


nonatomic


,


strong


)


tableVC


*firstVC;


@property


(


nonatomic


,


strong


)


ViewController1


*secondVC;


@property


(


nonatomic


,


strong


)


ViewController2


*thirdVC;


@property


(


nonatomic


,


strong


)


ViewController4


*fourVC;


//*


当前视图控制器


*/


@property


(


nonatomic


,


strong


)


UIViewController


*currentVC;




@property


(


nonatomic


,


strong


)


UIScrollView


*headScrollView;


@property


(


nonatomic


,


strong


)


NSMutableArray


*itemArray;


@property


(


nonatomic


,


strong


)


UIView


*contentVie



第一步:头部列表视图的创建




_itemArray


= [


NSMutableArray




arrayWithObjects


:


@”


头条





,


@”


今日





,


@”


焦点





,


@”


呵呵





,


nil


];


_headScrollView


= [[


UIScrollView




alloc


]


initWithFrame


:


CGRectMake


(


0


,


20


, [


UIScreen




mainScreen


].


bounds


.


size


.


width


,


44


)];




_headScrollView


.


backgroundColor


= [


UIColor




colorWithWhite


:


0.902




alpha


:


1.000


];







for


(


int


i =


0


; i<


_itemArray


.


count


; i++) {




UIButton


*itemButton = [[


UIButton




alloc


]


initWithFrame


:


CGRectMake


(i*([


UIScreen




mainScreen


].


bounds


.


size


.


width


/


_itemArray


.


count


),


0


, [


UIScreen




mainScreen


].


bounds


.


size


.


width


/


_itemArray


.


count


,


44


)];


itemButton.


tag


=


100


+i;


itemButton.


backgroundColor


= [


UIColor




clearColor


];




NSDictionary


*dic =


@{



NSForegroundColorAttributeName


:[


UIColor




purpleColor


],


NSFontAttributeName


:[


UIFont




systemFontOfSize


:


14.0f


]


}


;


[itemButton


setAttributedTitle


:[[


NSAttributedString




alloc


]


initWithString


:


_itemArray


[i]


attributes


:dic]


forState


:


UIControlStateNormal


];


[itemButton


addTarget


:


self




action


:


@selector


(buttonClick:)


forControlEvents


:


UIControlEventTouchUpInside


];


[


_headScrollView




addSubview


:itemButton];


}


[


_headScrollView




setContentSize


:


CGSizeMake


([


UIScreen




mainScreen


].


bounds


.


size


.


width


,


44


)];




_headScrollView


.


showsHorizontalScrollIndicator


=


NO


;




_headScrollView


.


showsVerticalScrollIndicator


=


NO


;


[


self


.


view




addSubview


:


_headScrollView


];


第二步:设置视图展示子视图VC的frame




_contentView


= [[


UIView




alloc


]


initWithFrame


:


CGRectMake


(


0


,


64


, [


UIScreen




mainScreen


].


bounds


.


size


.


width


, [


UIScreen




mainScreen


].


bounds


.


size


.


height





64


)];




_contentView


.


backgroundColor


= [


UIColor




clearColor


];


[


self


.


view




addSubview


:


_contentView


];


第三步:添加子视图控制器


{




_firstVC


= [[


tableVC




alloc


]


init


];


[


self




addChildViewController


:


_firstVC


];





_secondVC


= [[


ViewController1




alloc


]


init


];


[


self




addChildViewController


:


_secondVC


];





_thirdVC


= [[


ViewController2




alloc


]


init


];


[


self




addChildViewController


:


_thirdVC


];





_fourVC


= [[


ViewController4




alloc


]


initWithNibName


:


@”ViewController4″




bundle


:


nil


];


[


self




addChildViewController


:


_fourVC


];



//


默认展示的是第一个子视图控制器


*/




//


调整子视图控制器的


Frame


已适应容器


View


[


self




fitFrameForChildViewController


:


_firstVC


];




//


设置默认显示在容器


View


的内容


[


self


.


contentView




addSubview


:


_firstVC


.


view


];





_currentVC


=


_firstVC


;

}


//


点击事件


– (


void


)buttonClick:(


UIButton


*)sender{




if


((sender.


tag


==


100


&&


_currentVC


==


_firstVC


) || (sender.


tag


==


101


&&


_currentVC


==


_secondVC


) || (sender.


tag


==


102


&&


_currentVC


==


_thirdVC


) || (sender.


tag


==


103


&&


_currentVC


==


_fourVC


)) {




return


;


}




switch


(sender.


tag


) {




case




100


:{


[


self




fitFrameForChildViewController


:


_firstVC


];


[


self




transitionFromOldViewController


:


_currentVC




toNewViewController


:


_firstVC


];


}




break


;




case




101


:{


[


self




fitFrameForChildViewController


:


_secondVC


];


[


self




transitionFromOldViewController


:


_currentVC




toNewViewController


:


_secondVC


];


}




break


;




case




102


:{


[


self




fitFrameForChildViewController


:


_thirdVC


];


[


self




transitionFromOldViewController


:


_currentVC




toNewViewController


:


_thirdVC


];


}




case




103


:{


[


self




fitFrameForChildViewController


:


_fourVC


];


[


self




transitionFromOldViewController


:


_currentVC




toNewViewController


:


_fourVC


];


}




break


;


}


}


– (


void


)fitFrameForChildViewController:(


UIViewController


*)chileViewController{




CGRect


frame =


self


.


contentView


.


frame


;


frame.


origin


.


y


=


0


;


chileViewController.


view


.


frame


= frame;


}






//


转换子视图控制器


– (


void


)transitionFromOldViewController:(


UIViewController


*)oldViewController toNewViewController:(


UIViewController


*)newViewController{


[


self




transitionFromViewController


:oldViewController


toViewController


:newViewController


duration


:


0.3




options


:


UIViewAnimationOptionTransitionCrossDissolve




animations


:


nil




completion


:^(


BOOL


finished) {




if


(finished) {


[newViewController


didMoveToParentViewController


:


self


];




_currentVC


= newViewController;


}


else


{




_currentVC


= oldViewController;


}


}];


}




//


移除所有子视图控制器


– (


void


)removeAllChildViewControllers{




for


(


UIViewController


*vc


in




self


.


childViewControllers


) {


[vc


willMoveToParentViewController


:


nil


];


[vc


removeFromParentViewController


];


}


}





版权声明:本文为qq_31863011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。