我有一个 UIPopoverController,我已经使用了一段时间。我现在正在为 iOS 7 更新我的代码,当我调整弹出框的大小时,它突然在屏幕上移动,这造成了非常糟糕的用户体验。
当我处于纵向时,它不会发生。我点击打开弹出窗口,然后点击导致弹出窗口展开的按钮,一切都很好。但是,如果我切换到横向并执行相同的操作,当我点击按钮展开弹出窗口时,它会滑到另一个位置。
这是一段视频,展示了我在说什么:https://vimeo.com/75632364
这是当用户点击导致弹出框调整大小的按钮时运行的代码:
- (IBAction) touchedButtonPayDownLoan:(id)sender {
UIView *payOffView = nil;
if ([self.liability isBankLoan]) {
payOffView = self.viewPayoffBank;
} else {
payOffView = self.viewPayoffOther;
}
CGRect loanFrame = payOffView.frame;
loanFrame.origin.y = self.toolbar.frame.origin.y;
payOffView.frame = loanFrame;
[self.view addSubview:payOffView];
[self.view bringSubviewToFront:self.toolbar];
[UIView beginAnimations:@"Show Payoff View" context:nil];
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[items removeLastObject];
[items addObject:self.barButtonFinish];
self.toolbar.items = items;
// -------- RELEVANT BITS HERE ---------
CGRect frame = self.view.frame;
frame.size.height += payOffView.frame.size.height;
self.view.frame = frame;
self.preferredContentSize = frame.size;
// -------- RELEVANT BITS HERE ---------
[UIView commitAnimations];
}
我不希望弹出窗口跳转位置,因为这会惹恼用户。有什么想法吗?
最佳答案
我遇到了类似的问题,我发现弹出框的移动是由于布局管理器认为新尺寸的弹出框不适合最后的位置,或者在新的位置看起来更好一 - 你很可能用
创建弹出窗口permittedArrowDirections = UIPopoverArrowDirectionAny
令人困惑的是,尽管弹出窗口移动到新位置,但箭头并没有重新绘制。
在我这边,我通过将 permittedArrowDirections 显式设置为一个值(UP 或 DOWN)解决了这个问题,并且调整大小不再使我的弹出框四处移动。
希望这对您有所帮助。
关于ios - UIPopoverController 在我调整它的大小时移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19064244/
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我的代码目前看起来像这样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上找到一
这里有一个很好的答案解释了如何在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返回它复制的字节数,但是当我还没有下
当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。
我有以下内容:text.gsub(/(lower)(upper)/,'\1\2')我可以将\2替换为大写吗?类似于:sed-e's/\(abc\)/\U\1/'这在Ruby中可行吗? 最佳答案 查看gsub文档:str.gsub(模式){|匹配|block}→new_str在block形式中,当前匹配字符串作为参数传入,$1、$2、$`、$&、$'等变量将被适当设置。block返回的值将替换为每次调用的匹配项。"alowerupperb".gsub(/(lower)(upper)/){|s|$1+""+$2.upcase}