标签: uisplitviewcontroller

SplitView详细信息视图返回错误的视图框架?

我在iPad应用程序中使用splitView.详细视图中有2个子视图,它根据etail视图边界绘制自己.问题是,即使ipad处于横向模式,它们总是在(1024,768)中绘制自己.

顺便说一句 - 如果我然后以纵向模式呼叫,然后旋转ipad,他们会缩放到(706,768).

我已经检查了详细视图框架和它创建的边界(在视图中执行加载方法),在这两种情况下我都得到了这个:

NSLog(@"screen frame = %@",NSStringFromCGRect(self.view.frame));
NSLog(@"screen bounds = %@",NSStringFromCGRect(self.view.bounds));
Run Code Online (Sandbox Code Playgroud)

在调试窗口中,我得到:

2011-03-03 10:58:19.376 English Club[63347:207] screen frame = {{0, 0}, {768, 1024}}
2011-03-03 10:58:19.382 English Club[63347:207] screen bounds = {{0, 0}, {768, 1024}}
Run Code Online (Sandbox Code Playgroud)

我无法找出问题所在.谁能帮我?

谢谢你的帮助.

cocoa-touch uiview ipad uisplitviewcontroller ios

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

iOS 13中UISplitViewController的详细信息窗格中的新UINavigationBar外观

在iOS 13下,如果您在导航控制器中设置了可滚动的根视图控制器(例如UITableViewController),然后将该导航控制器放在UISplitViewController的详细信息窗格中,那么当滚动内容为时,导航栏的背景将不可见。在顶部。

通过基于“主/详细信息”模板创建一个新的iOS项目,您可以看到此信息。然后修改情节提要以在详细信息窗格的导航控制器中使用UITableViewController。将设备/模拟器置于“亮外观”模式(它比“暗”模式更好地显示了问题)。运行应用程序,并注意导航栏区域的颜色与表格视图背景的颜色相同。现在向上滚动表格视图,导航栏颜色将变为标准的浅灰色。让表格视图返回顶部,导航栏颜色再次消失。

我仅在拆分视图控制器的详细信息窗格中看到了这一点。

如何关闭此“功能”,以使导航栏看起来正常,就像在拆分视图控制器的详细信息窗格以外的其他任何地方使用的所有其他导航栏一样?

UISplitViewController或没有相关的API更改UISplitViewControllerDelegateUINavigationController两者都没有。

经过一番挖掘后,我找到了一种解决方法,但我很想找到一种避免这样做的方法。

UINavigationBar类现在有用于设置其外观的一些新特性。奇怪的是,在的文档中的“自定义导航栏的外观”下没有提及这些UINavigationBar

iOS 13中有三个新属性:

  • standardAppearance
  • compactAppearance
  • scrollEdgeAppearance

这三个都是类型UINavigationBarAppearance

默认情况下仅设置第一个。

即使scrollEdgeAppearancenil,拆分控制器的详细信息窗格的行为也好像已将其backgroundColor设置为clear颜色一样。

因此,解决方法是将以下行添加到viewDidLoad导航控制器的根视图控制器的方法:

navigationController?.navigationBar.scrollEdgeAppearance = navigationController?.navigationBar.standardAppearance
Run Code Online (Sandbox Code Playgroud)

为什么仅在这种情况下才需要?除了添加此代码,还有其他更正确的解决方案吗?

我注意到,苹果的任何应用程序(至少包括Mail,Notes和Files)似乎都没有使用此“功能”。

uinavigationbar uisplitviewcontroller ios ios13

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

UISplitViewController在启动纵向时不显示弹出按钮

我正在做一个基于UISplitViewController的iPad应用程序.当我的应用程序在potrait中启动时,我对toobar按钮有一点问题.不显示显示弹出窗口的按钮.然而,当我将iPad旋转到横向然后再回到肖像时,按钮显示!

看起来在启动时没有调用以下方法(这是我有代码显示按钮):

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
Run Code Online (Sandbox Code Playgroud)

应用程序启动时不会调用此方法,但仅在有旋转时调用.更奇怪的是,我使用Xcode UISplitViewController模板+核心数据制作了一个测试应用程序(类似于我正在使用的应用程序,并且是我用来制作此应用程序的模板).在我没有编写一行代码的测试应用程序上,按钮显示我以纵向模式启动应用程序时,上面的方法也会在启动时调用,而不是我的其他应用程序.有没有人有类似的问题?

最后,从Apple文档中不清楚在首次显示UISplitViewController时是否应该调用此方法:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/的reference.html%23 // apple_ref/DOC/UID/TP40009454

portrait launch ipad uisplitviewcontroller

17
推荐指数
1
解决办法
7296
查看次数

针对5.1 SDK进行编译强制新的UIPopoverController"滑入"弹出窗口的演示 - 如何禁用?

根据5.1 SDK(发行版)编译我的iPad应用程序会导致UIPopoverController使用左侧演示文稿中的新"幻灯片放映"显示自己.这完全打破了我的popover演示,它依赖于具有"黑色"样式标题和一定高度.我试过设置presentsWithGestureNO,但似乎只禁用滑动手势,并不会停止的演讲风格.

这个相同的应用程序,无需重新编译,但在iOS 5.1上运行,使用旧的popover演示文稿样式.所以我知道iOS 5.1仍然支持向后兼容的方法.如何选择激活弹出窗口的旧演示文稿?

不幸的是,这对我的应用程序非常重要.

如果不这样做,有没有办法在新的弹出窗口上获得"黑色"标题?


虽然我的应用程序中有一个UISplitViewController,但它不负责显示弹出窗口.相反,我正在使用此代码:

   [self.popoverController presentPopoverFromRect:ipadButtonMenu.frame
                                           inView:self.view
                         permittedArrowDirections:UIPopoverArrowDirectionUp
                                         animated:YES];
Run Code Online (Sandbox Code Playgroud)

这个问题是由苹果开发者论坛中交叉张贴在这里.我希望有人有答案.


预期演讲: 在此输入图像描述

在iOS 5.1 SDK下编译后的演示文稿: 在此输入图像描述

uikit ipad uisplitviewcontroller uipopovercontroller ios

17
推荐指数
1
解决办法
3566
查看次数

CoreData编辑/覆盖对象

我正在玩一个新项目,一个使用Core Data的拆分视图iPad应用程序,我很想知道,因为它非常清楚如何添加和删除项目.如果我要改变它来保存文本,那么该文本将显示在a中UITextView,如何编辑或覆盖CoreData中的对象?

因此,用户UITextView在他们离开时键入他们的音符,然后编辑并保存他们当前选择的音符(表格视图中的对象).

感谢任何帮助.

core-data objective-c uitextview ipad uisplitviewcontroller

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

故事板,UIViewController和UISplitViewController

试图为iPad制作基于故事板的应用程序.在其中我需要从开始屏幕(UIViewController)转换到主屏幕(UISplitViewController)然后转换到全屏视图(再次UIViewController).

我在网上看到了很多讨论(至少有几个 - 关于stackoverflow),说明UISplitViewController不能在基于Storyboard的应用程序中以任何其他方式使用,而不是RootViewController.一些线程包含解决方法,还有替代splitview(https://github.com/mattgemmell/MGSplitViewController)来处理这个问题.

但我无法理解的是,为什么Apple文档恰恰相反.这是Apple iOS 5.0库中章节的链接.它指出:


使用故事板创建拆分视图控制器

要将拆分视图控制器添加到应用程序的故事板:

  1. 打开应用程序的主要故事板.
  2. 将拆分视图控制器拖出库.这还为分割视图控制器的两个窗格创建视图控制器.
  3. 对于每个拆分视图控制器包含的视图控制器,使用标识检查器设置视图控制器的类名称.

要显示拆分视图界面,​​请执行以下操作之一:

  • 通过选择场景并选中"属性"检查器下的"是初始视图控制器"框,将其显示为第一个场景.
  • 通过向其添加模态segue,从另一个场景中显示它.
  • 通过调用performSegueWithIdentifier:sender:方法以编程方式显示它以启动模态segue.

我在很多方面尝试过它,但最后两个语句中描述的方法从未奏效.modal segue和performSegue都失败了,众所周知的错误:

"***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'应用程序试图以模态方式呈现拆分视图控制器......"

有人能够解释一下吗?这是XCODE/iOS 5.0中的错误还是文档中的错误?

此致,彼得

storyboard uiviewcontroller uisplitviewcontroller segue

15
推荐指数
1
解决办法
8988
查看次数

如何使autolayout覆盖UIImageView的内在大小?

我遇到了自动布局的问题,我的详细信息视图在UISplitViewController.我的视图层次结构包含UIImageView带有装饰元素的视图,图像视图的内在大小似乎搞砸了其余控件的布局.

这些是我为图像视图指定的约束:

H:[UIImageView:0xc83ba90]-(NSSpace(20))-|
H:|-(NSSpace(20))-[UIImageView:0xc83ba90]
UIImageView:0xc83ba90.bottom == UITextField:0xc83d2d0.bottom
V:[UIImageView:0xc83ba90 (3)]>,
H:[UIImageView:0xc83ba90 (532)] Hug:1 CompressionResistance:750
V:[UIImageView:0xc83ba90 (2)] Hug:250 CompressionResistance:750
Run Code Online (Sandbox Code Playgroud)

我想要的行为是调整图像视图的大小以填充其超级视图,如前两个约束所述.我看到的实际行为是图像视图仅占用由其内在大小约束描述的水平空间.它似乎也在改变其所有兄弟视图的布局,就好像superview只是在与图像视图一样宽的矩形中布局视图.

我认为指定图像视图的拥抱优先级尽可能低会让其他约束覆盖它以调整图像视图的大小.我在这做错了什么?

uiimageview uisplitviewcontroller ios autolayout

15
推荐指数
1
解决办法
2427
查看次数

使用UITabbar的UISplitView

我有一个奇怪的,我似乎无法解决.我目前正在努力将我的应用更新到iOS7.这一切都在iOS6中有效.它是一个通用应用程序,因此使用相同的xib文件.然而,iPad在某些上使用了UISplitViews.就像我说的,这一切都适用于iOS6哦,这一切都适用于iPhone.

问题是底部是灰色条.我将标签栏更改为不透明以正确移动视图,因为我将一些UI剪切到视图底部并且位于标签栏下方,在那里进行了侧移.但是,如果我将它设置回半透明条,它会在下方但正确拉伸.如果我不这样做,它会添加一个条形码.其他选项卡在不使用splitview时工作正常.

UISplitviewController以编程方式添加.

有关更好的说明,请参见附图.

灰色条位于我的splitview和tabbar之间

我试过这个:

  • 在splitview上添加了自动调整大小
  • 已检查xib以查看拆分视图中的子视图以自动调整大小
  • 试图强制splitview成为屏幕边界
  • 删除了所有视图上绑定的剪辑
  • 删除了自动调整大小的子视图

任何想法都会受到欢迎.

谢谢你们.

更新:

设置uisplitview的背景颜色,它会使条纹黑色.所以uisplitview肯定会延伸到它.

objective-c uitabbarcontroller uisplitviewcontroller ios ios7

14
推荐指数
2
解决办法
3747
查看次数

UINabigationController里面的一个UITabBarController里面的UISplitViewController在iPhone上以模态方式呈现

我有一个UISplitViewController,它包含一个UITabBarController作为主视图.这个UITabBarController包含一个UINavigationController.详细视图也包含UINavigationController.

故事板

在iPad上,这可以按预期工作.的节目详细赛格瑞呈现在详细视图中导航控制器内的ImageView的.

另一方面,在iPhone上,我预计show detail segue会在主视图的导航控制器的堆栈上推送详细视图.但实际上它是在主视图上以模态方式呈现的.

从故事板中删除UITabBarController并直接在主视图中使用UINavigationController时,这可以正常工作.

有谁知道如何在iPhone上的主人UINavigationController堆栈上呈现详细视图?

iphone uitabbarcontroller uinavigationcontroller uisplitviewcontroller ios8

13
推荐指数
2
解决办法
2620
查看次数

UISearchBar不会在UISplitviewController Master中响应

UITableviewUISplitviewController通用iOS9应用程序中有一个非常标准的主控制器设置.

再次,标准票价,我插入一个UISearchBar作为表的标题.

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.hidesNavigationBarDuringPresentation = NO;

[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;

self.definesPresentationContext = YES;
Run Code Online (Sandbox Code Playgroud)

无需显示我的其余代码,搜索和所有按预期工作的内容iPhone.我的问题是搜索栏在运行时不会获得焦点或显示键盘iPad.没有回应,似乎没有接受.甚至没有响应以编程方式尝试becomeFirstResponder.

什么都没发生.

搜索栏可见且放置正确,没有底衬或叠加问题.

它工作正常iPhone.接收触摸,呈现键盘,搜索工作.据推测,UISplitviewController折叠时的呈现方式存在重大差异.通过几个小时的搜索,浏览文档和我遇到的每个教程,我都没有找到类似的经历,这是令人惊讶的.

附加说明:如果我使用多任务处理将分割视图缩小到iPad上折叠,则搜索栏将起作用,与之相同iPhone.它肯定与拆分视图的折叠状态有关.

更新:(越来越近)

经过进一步的实验,我发现如果您在横向上启动应用程序,搜索栏将在iPad上运行.在纵向模式下,我的主控制器被隐藏.它通过选择displayModeButtonItem设置为leftBarButtonItem细节控制器的滑入.那时,searchBar会中断并且不再响应触摸.

如果我从横向开始,然后旋转到肖像,它也会停止工作.旋转回景观并不能解决问题.一旦破裂,它会一直保持破碎状态直到重启.

我试着转向主控制器definesPresentationContextviewWillAppear方法,但这没有效果.

进一步更新:

另一个意想不到的情况是iPhone 6plus上的搜索栏完全没有问题.无论方向,折叠或否,都可以工作,无论它起始于哪个状态都无关紧要.我希望在横向时这与iPad相同.完全工作iPhone.

我还是没想出来.我最近尝试修复,我将所有搜索控制器初始化移动到该viewDidLayoutSubviews方法.没有任何改变.

此外,我注意到当搜索处于活动状态时,键盘在屏幕上,如果我旋转iPad,键盘会消失,但搜索栏仍保持活动状态.起初我没有意识到,然后我看到取消按钮仍然显示.它不会接受触摸,也没有键盘,但它显然仍然是第一响应者.

示例项目上传到GitHub: Github存储库

注意 - 在我将UISplitview Delegate方法添加到项目之前没有问题.我想立即将此问题添加到我的问题中,因此,我还没有尝试确切地看到这些委托方法如何影响搜索栏,但显然问题是在某处创建的.

更新:

我尝试了一些更多的变化没有成功.

  • 将搜索栏移动到节标题.没有快乐.
  • 将搜索栏放在UIView中作为内容视图.没有快乐. …

uisplitviewcontroller ios uisearchcontroller

13
推荐指数
1
解决办法
675
查看次数