当 UIPopoverController 包含的 UINavigationController 推送一个新 Controller 时,如何让我的 UIPopoverController 为其大小设置动画?
我有一个 UIPopover从 UIBarButtonItem 显示在我的 iPad 应用程序中。它包含一个 UINavigationViewController ,它有一种设置窗口作为它的 Root View Controller 。设置窗口是 UITableViewController 的子类。 (样式设置为分组),并点击它的任何单元格将不同的“选择器” View Controller 推送到导航 Controller 上,这些 Controller 也是 UITableViewController 的子类.
对于每个选择器 View ,在 viewDidAppear , 我正在设置 contentSizeForViewInPopover适本地:
self.contentSizeForViewInPopover = CGSizeMake(320, self.items.count * 44);
但它并没有动画变化;当导航动画结束时,弹出框会捕捉到新的高度(宽度永远不会从 320 改变)。向后导航会动画大小变化(使用 this answer 中的技术完成),但向前导航不会。setPopoverContentSize:animated:但它不起作用。我看过 other questions无济于事。UITableViewController子类,称为 TestContentViewController ,作为它的 Root View Controller 。viewDidLoad在那个子类中,我随机生成了一些项目:self.numItems = arc4random() % 10 + 3;
这是我的行数;节数为 1。在 cellForRowAtIndexPath我只是设置单元格的标签文本并返回它。选择一行时,我会生成同一类的另一个实例,然后将其推在堆栈上。contentSizeForViewInPopover 进行任何操作任何 VC 上的属性,无论我的 TableView 中有多少行,弹出框都会达到其最大高度并保持在那里。-(void)viewDidAppear:(BOOL)animated
{
self.contentSizeForViewInPopover = CGSizeMake(320, self.numItems * 44);
[super viewDidAppear:animated];
{
viewWillAppear :viewDidLoad 中做同样的事情,与viewWillAppear基本相同除了它最初以正确的大小出现。setPopoverContentSize:animated: 中设置弹出框的高度(navigationController:didShowViewController:animated:) ,但最终的高度有一点偏差。我认为我在那里设置的大小需要考虑到内置于弹出框顶部的导航栏的额外高度。将新 Controller 插入堆栈时的动画很奇怪。UIPopoverPresentationController 解决了同样的问题.
最佳答案
尝试为所有 执行以下操作UITableViewController ,我试过了,它对我有用!
- (void)setSize:(BOOL)fake
{
CGSize view_size;
int sections_height, rows_height;
//if you dynamically change the number of visible rows
//for example overriding numberOfRowsInSection:section
//this can help you to evaluate the correct popover height
int sections = [self.tableView numberOfSections];
int rows = 0;
for(int i = 0; i < sections; i++){
rows += [self.tableView numberOfRowsInSection:i];
}
sections_height = sections * 30 /*section height*/;
rows_height = rows * 44 /*row height*/;
view_size = CGSizeMake(320 /*fixed width*/, sections_height + rows_height);
if(fake){
view_size.width -= 1;
view_size.height -= 1;
}
[self setContentSizeForViewInPopover:view_size];
}
- (void)viewDidLoad
{
[super viewDidLoad];
//...
[self setSize:FALSE];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self setSize:TRUE];
}
- (void)viewDidAppear:(BOOL)animated
{
[self setSize:FALSE];
[super viewDidAppear:animated];
}
关于ios - 在 iPad 上的弹出窗口中推送导航 View Controller 时动画 popoverContentsize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605818/
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上