你们中的任何一个人都可以在UINavigationController中制作自定义动画,例如从中间展开吗?(例如,从启动器视图中选择新闻源时的Facebook应用)
我看到了一个技巧,如动画所需的下一个控制器的视图,但我使用Three20框架,并获得下一个控制器视图是困难的.
所以我唯一的选择是玩CATransition.我可以设法使用这段代码获得某种接近我想要的动画.
CATransition* transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
transition.subtype = kCATransitionReveal;
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
Run Code Online (Sandbox Code Playgroud)
它会做什么?它将为渐变类型的动画制作动画.我想要的是像从CABasicAnimation缩放视图框架.
anim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)];
Run Code Online (Sandbox Code Playgroud)
你们知道怎么做到这一点吗?像CATransition里面的变换动画.
iphone animation uinavigationcontroller three20 catransition
我正在将应用程序翻译成印度尼西亚语.故事板使用导航控制器并为其所有视图推送segue.当我从主菜单进入视图时,后退按钮被正确翻译,但是当我从那里进入视图时(远离主菜单的两个视图),后退按钮显示"返回".在此先感谢您的帮助.
对于我正在开发的应用程序,我需要在导航栏中显示自定义后退按钮.我将按钮资源作为PNG图像,我正在编写此代码:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(0, 0, 79, 29.0);
[backButton setImage:[UIImage imageNamed:@"button_back.png"] forState:UIControlStateNormal];
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
Run Code Online (Sandbox Code Playgroud)
}
当我按下这个视图控制器时,自定义按钮不显示,而是我得到标准的后退按钮,里面有这个视图控制器的标题.
我已经尝试过的事情:
backButton通过将按钮添加到视图层次结构,可以加倍检查按钮是否已正确创建.它显示正常.title属性navigationItem并确认它更改(按预期)我的后退按钮的内容.谁能发现我做错了什么?有没有人成功使用自定义图像作为后退按钮UINavigationController?
我想在用户点击tabbar项时禁用默认操作.
例如,我有一个Tab5,Tab1,Tab2和Tab3.在Tab1中,用户可以从View1导航到View3(View1> View2> View3).如果用户在View3,并且他点击Tab1,则应用程序将用户带到View1(根视图控制器).我想禁用此功能.我不希望在Tab1上点击以弹出所有视图控制器.我怎样才能做到这一点?
编辑:
这种行为有点奇怪,但在深层次结构的情况下是一个方便的快捷方式!
您可以实现以下UITabBarControllerDelegate方法来禁用此系统范围的快捷方式:
#pragma mark -
#pragma mark UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
UIViewController *tbSelectedController = tbc.selectedViewController;
if ([tbSelectedController isEqual:vc]) {
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud) 我有3个看法.(比如说第1,第2,第3).我已经在第一个推送第二个视图(有一个加载视图方法).在第二个视图中,我创建了第三个使用initWithFrame(继承自UIWebView).在第二个视图中,我写了self.view = 3rd view.
现在我想在第三个视图中隐藏第二个视图的导航栏(即,当用户触摸第三个视图屏幕即UIWebView时).我使用手势进行了触摸识别,但我无法隐藏导航栏.
第3视图不支持self.navigationController.如果我在3rd中创建第二个视图的对象,它不会隐藏导航栏.有谁能够帮我?
对于我认为可能很容易的事情,我遇到了一些麻烦.我在根视图控制器中有一个表,当选择一行时,我按下一个新视图,然后从那里转到另一个选项卡.
我的问题是如何确保一旦用户点击第一个选项卡,导航控制器将弹出到root?
我的应用程序主要是肖像,但有一个视图需要横向方向.
我的观点包含在UINavigationController中,显然这是导致此问题的原因.
除了一个之外的所有UIViewControllers都有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Run Code Online (Sandbox Code Playgroud)
需要Landscape的UIViewController有这样的:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
Run Code Online (Sandbox Code Playgroud)
现在,当用户到达横向UIViewController时会发生什么,它以纵向显示.然后,用户可以旋转他们的手机,并按照我想要的方式显示在风景中(锁定到风景).然后用户继续前进到肖像UIViewController,同样的事情发生:它从横向开始,然后他们旋转他们的手机,它再次成为肖像(并锁定到肖像).
似乎UIViewControllers之间允许方向锁定,但是以某种方式阻止了自动旋转/以编程方式更改方向.
如何强制手机更新到正确的方向?
有一个临时解决方案:我可以检测设备的方向并显示一条消息,要求他们旋转设备,如果它不正确,但这不是最佳的.
所以我遇到了许多其他人在使用UIButton作为自定义视图创建UIBarButtonItem时遇到的相同问题.
基本上,按钮向左或向右约10像素到远.当我使用没有自定义视图的常规BarButtonItem时,这不会发生.
这篇文章提供了部分解决方案: UIBarButton With Custom View
这是我通过子类化UIButton创建的代码(如另一篇文章中所述)
- (UIEdgeInsets)alignmentRectInsets {
UIEdgeInsets insets;
if ([self isLeftButton]) {
insets = UIEdgeInsetsMake(0, 9.0f, 0, 0);
}
else { // IF ITS A RIGHT BUTTON
insets = UIEdgeInsetsMake(0, 0, 0, 9.0f);
}
return insets;
}
- (BOOL)isLeftButton {
return self.frame.origin.x < (self.superview.frame.size.width / 2);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但当我从导航控制器弹出一个视图控制器回到这个主视图时,按钮仍然错误地定位了大约.3秒,然后它捕捉到正确的插图.
这是一个巨大的眼睛,我不知道如何阻止它像这样攫取.有什么想法吗?谢谢!
我有一个嵌套在一个视图控制器UINavigationController.
我已经实现了iOS 7的interactivePopGestureRecognizer,使用户可以手势将VC从堆栈中弹出.
在VC中我有一个滚动视图,当用户不在滚动视图的顶部时,我隐藏了所有的chrome(导航栏和状态栏)以将焦点放在内容上.
但是,如果隐藏了导航栏,则interactivePopGestureRecognizer将无法正常工作.
我已经尝试在它消失后启用它并验证它不是零,但它仍然不起作用.
有什么我想念的吗?
uinavigationbar uinavigationcontroller uigesturerecognizer ios7
在iOS 8中,视图控制器现在可以调用showDetailViewController:sender:以让系统确定正确的视图控制器以呈现详细视图控制器.
在我的应用程序中,我有一个UISplitViewController,它的viewControllers数组中包含两个UINavigationControllers.第一个UINavigationController包含我的"主"视图,UITableViewController的子类.第二个UINavigationController包含我的"详细信息"视图.
因为我试图使这项工作普遍,我试图showDetailViewController:sender:用来显示详细信息视图:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.itemVC.item = self.itemStore.items[indexPath.row];
[self showDetailViewController:self.itemVC sender:self];
}
Run Code Online (Sandbox Code Playgroud)
这适用于水平紧凑特性(iPhone风格)时self.splitViewController.collapsed == YES,但不适用于特性为常规(iPad,未折叠)时.在iPad上,它用细节视图控制器替换细节UINavigationController(而不是替换UINavigationController的viewControllers数组).
为了解决这个问题,我已经测试了它是否已经崩溃,如果不是,我会在显示它之前将详细视图控制器包装在另一个UINavigationController中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.itemVC.item = self.itemStore.items[indexPath.row];
UIViewController *vcToShow;
// For whatever reason, when not collapsed, showDetailViewController replaces the detail view, doesn't push onto it.
if (self.splitViewController.collapsed) {
vcToShow = self.itemVC;
} else {
vcToShow = [[UINavigationController alloc] initWithRootViewController:self.itemVC];
}
[self showDetailViewController:vcToShow sender:self];
}
Run Code Online (Sandbox Code Playgroud)
我想或者我可以配置self.itemVC并避免showDetailViewController:sender:在self.splitViewController.collapsed == …
objective-c uinavigationcontroller uisplitviewcontroller ios ios8
ios ×5
iphone ×5
objective-c ×3
ios7 ×2
animation ×1
back-button ×1
catransition ×1
ios5 ×1
ios8 ×1
localization ×1
tabbar ×1
three20 ×1
uibutton ×1
uitabbar ×1