标签: uinavigationcontroller

UINavigationController自定义动画

可能重复:
用于推送UIViewController的自定义动画

你们中的任何一个人都可以在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

19
推荐指数
0
解决办法
2704
查看次数

如何本地化后退按钮?

我正在将应用程序翻译成印度尼西亚语.故事板使用导航控制器并为其所有视图推送segue.当我从主菜单进入视图时,后退按钮被正确翻译,但是当我从那里进入视图时(远离主菜单的两个视图),后退按钮显示"返回".在此先感谢您的帮助.

localization back-button uinavigationcontroller ios

19
推荐指数
2
解决办法
8620
查看次数

UINavigationController中的自定义后退按钮

对于我正在开发的应用程序,我需要在导航栏中显示自定义后退按钮.我将按钮资源作为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)

}

当我按下这个视图控制器时,自定义按钮不显示,而是我得到标准的后退按钮,里面有这个视图控制器的标题.

我已经尝试过的事情:

  1. backButton通过将按钮添加到视图层次结构,可以加倍检查按钮是否已正确创建.它显示正常.
  2. 在同一方法中,更改了title属性navigationItem并确认它更改(按预期)我的后退按钮的内容.

谁能发现我做错了什么?有没有人成功使用自定义图像作为后退按钮UINavigationController

iphone uinavigationcontroller

18
推荐指数
3
解决办法
4万
查看次数

禁用操作 - 用户点击tabbar项目以转到根视图控制器

我想在用户点击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)

iphone tabbar uinavigationcontroller uitabbar target-action

18
推荐指数
1
解决办法
4561
查看次数

隐藏导航栏

我有3个看法.(比如说第1,第2,第3).我已经在第一个推送第二个视图(有一个加载视图方法).在第二个视图中,我创建了第三个使用initWithFrame(继承自UIWebView).在第二个视图中,我写了self.view = 3rd view.

现在我想在第三个视图中隐藏第二个视图的导航栏(即,当用户触摸第三个视图屏幕即UIWebView时).我使用手势进行了触摸识别,但我无法隐藏导航栏.

第3视图不支持self.navigationController.如果我在3rd中创建第二个视图的对象,它不会隐藏导航栏.有谁能够帮我?

objective-c uinavigationcontroller ios

18
推荐指数
2
解决办法
5万
查看次数

选中选项卡时弹出到根视图

对于我认为可能很容易的事情,我遇到了一些麻烦.我在根视图控制器中有一个表,当选择一行时,我按下一个新视图,然后从那里转到另一个选项卡.

我的问题是如何确保一旦用户点击第一个选项卡,导航控制器将弹出到root?

iphone uitabbarcontroller uinavigationcontroller ios

18
推荐指数
3
解决办法
2万
查看次数

UINavigationController强制旋转

我的应用程序主要是肖像,但有一个视图需要横向方向.

我的观点包含在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之间允许方向锁定,但是以某种方式阻止了自动旋转/以编程方式更改方向.

如何强制手机更新到正确的方向?

有一个临时解决方案:我可以检测设备的方向并显示一条消息,要求他们旋转设备,如果它不正确,但这不是最佳的.

iphone objective-c uinavigationcontroller ios ios5

18
推荐指数
2
解决办法
2万
查看次数

使用iOS7自定义UIBarButtonItem对齐

所以我遇到了许多其他人在使用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秒,然后它捕捉到正确的插图.

这是一个巨大的眼睛,我不知道如何阻止它像这样攫取.有什么想法吗?谢谢!

uibutton uinavigationcontroller uibarbuttonitem ios7

18
推荐指数
1
解决办法
1万
查看次数

隐藏导航栏时,UINavigationContoller interactivePopGestureRecognizer处于非活动状态

我有一个嵌套在一个视图控制器UINavigationController.

我已经实现了iOS 7的interactivePopGestureRecognizer,使用户可以手势将VC从堆栈中弹出.

在VC中我有一个滚动视图,当用户不在滚动视图的顶部时,我隐藏了所有的chrome(导航栏和状态栏)以将焦点放在内容上.

但是,如果隐藏了导航栏,则interactivePopGestureRecognizer将无法正常工作.

我已经尝试在它消失后启用它并验证它不是零,但它仍然不起作用.

有什么我想念的吗?

uinavigationbar uinavigationcontroller uigesturerecognizer ios7

18
推荐指数
3
解决办法
1万
查看次数

在UISplitViewController中,无法使showDetailViewController:sender:push into detail navigationController

在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

18
推荐指数
1
解决办法
8619
查看次数