iOS UIView 创建是不是都会经过initWithFrame

2025-04-24 06:55:44
推荐回答(1个)
回答1:

继承UIView的类是没有推出下一视图的系统功能的。 能够推出下一视图的系统方法有两种 一、UINavigationController的子类,用pushViewController的方法; 二、UIViewController的子类,用presentViewController的方法。 如果你实在是非要用UIView的子类推出下一视图,只有自己写个推出功能。 步骤如下: 1、新建一个UIView,大小跟屏幕一样大,初始化位置在屏幕之外; 2、用UIView的动画功能,将上一步新建的UIView移入屏幕内。 这样看起来的效果跟系统提供的功能效果差不多了。 代码大概如下所示: //Screen_Width是屏幕宽度的宏定义 //Screen_Height是屏幕高度的宏定义 UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(Screen_Width, 0, Screen_Width, Screen_Height)]; [self addSubview:newView]; [UIView transitionWithView:newView duration:3.0 options:0 animations:^{ //执行的动画 newView.center=CGPointMake(Screen_Width/2, Screen_Height/2); } completion:^(BOOL finished) { //动画执行完毕后的首位操作 NSLog(@"动画执行完毕"); }];