Bry*_*yan 4 cocoa-touch frame uitabbarcontroller bounds
当我的应用程序启动时,我正在加载启动画面.然后我想加载一个TabBarController和它的ViewControllers.但是,我的TabBarController窗口不会缩放到屏幕大小.
底部的TabBar可能会被切断,并且状态栏下方的屏幕顶部有一个细长的20像素间隙.如何正确调整TabBarController的大小?
这是加载启动视图的SplashViewController中的代码,以及TabBarController:
-(void)loadView{
// Init the view
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
UIView *view = [[UIView alloc] initWithFrame:appFrame];
view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = view;
[view release];
splashImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash.png"]];
splashImageView.frame = CGRectMake(0,0,320,458);
[self.view addSubview:splashImageView];
viewController = [[FlashCardViewController alloc] initWithNibName:@"FlashCardViewController" bundle:[NSBundle mainBundle]];
//viewController.view.bounds = [[UIScreen mainScreen]bounds];
viewController.title = @"Quiz";
viewController.tabBarItem.image = [UIImage imageNamed:@"puzzle.png"];
UIViewController *viewController2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
viewController2.title = @"Nada";
viewController2.tabBarItem.image = [UIImage imageNamed:@"magnifying-glass.png"];
//viewController.view.alpha = 0.0;
//[self.view addSubview:viewController.view];
tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:viewController, viewController2, nil];
[viewController2 release];
tabBarController.view.alpha = 0.0;
//tabBarController.tabBarItem.image = [UIImage imageNamed:@"State_California.png"];
//tabBarController.tabBarItem.title = @"State_California.png";
tabBarController.view.bounds = [[self view] bounds];
//tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
[self.view addSubview:tabBarController.view];
timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fadeScreen) userInfo:nil repeats:NO];
}
-(void) fadeScreen
{
[UIView beginAnimations:nil context:nil]; // begin animation block
[UIView setAnimationDuration:0.75]; // sets animation duration
[UIView setAnimationDelegate:self]; // sets the delegate for this block
[UIView setAnimationDidStopSelector:@selector(finishedFading)]; // Calls finishFading
self.view.alpha = 0.0; // // Fades the alpha to 0 over animation
[UIView commitAnimations]; // Commits this block, done
}
-(void) finishedFading
{
[UIView beginAnimations:nil context:nil]; // Begin animation block
[UIView setAnimationDuration:0.75]; // set duration
self.view.alpha = 1.0; // fades the view to 1.0 alpha over .75 seconds
//viewController.view.alpha = 1.0;
tabBarController.view.alpha = 1.0;
[UIView commitAnimations];
[splashImageView removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)
小智 12
我刚刚完成了相同的问题并遇到了同样的问题,但最终我得到了它的工作.
在Xcode中创建一个View Controller类Test1ViewController
并添加以下内容:
@interface Test1ViewController : UIViewController {
IBOutlet UITabBarController *tbc;
}
@property (nonatomic,retain) IBOutlet UITabBarController *tbc;
@end
Run Code Online (Sandbox Code Playgroud)创建一个名为的View XIB Test1View
添加TabBarViewController
到XIB
将XIB中的文件所有者设置为Test1ViewController
.
将tbc
文件所有者中的IBOutlet 连接到XIB中的选项卡栏控制器.
将view
文件所有者中的IBOutlet 连接到XIB中的视图.
在您的SplashViewController.h中添加属性
Test1ViewController *tabBarViewController;
Run Code Online (Sandbox Code Playgroud)合成tabBarViewController
你的SplashViewController.m
.
使用以下内容替换方法中的TabBarController
创建代码:loadView
SplashViewController
tabBarViewController = [[Test1ViewController alloc] initWithNibName:
@"Test1View" bundle:[NSBundle mainBundle]];
tabBarViewController.view.alpha = 0.0;
[self.view addSubview:[tabBarViewController view]];
Run Code Online (Sandbox Code Playgroud)这是我失踪的一点.在Test1ViewController.m
,您需要将以下行添加到该viewDidLoad
方法:
self.view = tbc.view;
Run Code Online (Sandbox Code Playgroud)最后,我还必须更改finishedFading
方法,SplashViewController.m
在tabBarViewController
视图上将alpha设置为1.0 .
-(void) finishedFading
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
self.view.alpha = 1.0;
tabBarViewController.view.alpha = 1.0;
[UIView commitAnimations];
[splashImageView removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)我希望这有帮助.
我终于找到了有效的方法.代替:
tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
Run Code Online (Sandbox Code Playgroud)
要么
tabBarController.view.bounds = [[self view] bounds];
Run Code Online (Sandbox Code Playgroud)
因为我无法找到此大小的自动或命名设置,所以我必须创建自己的矩形,该大小是屏幕大小减去statusBar.
tabBarController.view.frame = CGRectMake(0,0,320,460);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19842 次 |
最近记录: |