我不知道 iOS (6.x) 上的 AutoLayout 问题的答案。
我有一个带有 UILabel 和 UITextField 的 UITableViewCell,如下所示:
+------------------+
| label textField |
+------------------+
我想使用 AutoLayout 来布局这些,但有一个警告。 UILabel 在纵向模式下应为 100 点,在横向模式下应为 175 点。
即在视觉格式语言中,这将类似于以下内容
Portrait:
|-[label(100)]-[textField]-|
Landscape:
|-[label(175)]-[textField]-|
因此文本字段将占据单元格 View 的其余部分。
当然我可以通过覆盖 willRotateToInterfaceOrientation:duration: 来解决这个问题找出当前显示的单元格,然后调用 updateConstraints在它们上面,所以我可以根据方向更新标签的宽度,但这似乎不是可行的方法。首先,然后连接到旋转动画似乎很难或不可能。其次,我的感觉告诉我,我可以用优先级和不平等来解决它。我会添加类似 [label(>=100,<=175)] 的内容对于标签,但随后我需要做其他事情,否则标签将始终调整为特定大小(100 或 175)。
我以为我已经修复了它:我已经将标签的内容拥抱优先级设置为 200,在文本字段上设置宽度至少应为 152 的约束,然后它会执行我想要的操作,除非我举个例子启用 TableView 的编辑模式,因为这样文本字段就不能再宽 152 点(没有足够的空间)。输入这个任意的“152”也感觉不是要走的路。
那么有人对我如何解决这个问题有什么建议吗?
最佳答案
在上述评论的帮助下,我将以下内容添加到我的自定义 UITableViewCell 类中:
- (void)setupLabelWidthConstraint {
if (self.labelWidthConstraint) {
[self.contentView removeConstraint:self.labelWidthConstraint];
}
if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])) {
self.labelWidthConstraint =
[[NSLayoutConstraint constraintsWithVisualFormat:@"[label(==width)]"
options:0
metrics:@{@"width": [NSNumber numberWithFloat:LABEL_LANDSCAPE_WIDTH]}
views:@{@"label": self.label}] lastObject];
} else {
self.labelWidthConstraint =
[[NSLayoutConstraint constraintsWithVisualFormat:@"[label(==width)]"
options:0
metrics:@{@"width": [NSNumber numberWithFloat:LABEL_PORTRAIT_WIDTH]}
views:@{@"label": self.label}] lastObject];
}
[self.contentView addConstraint:self.labelWidthConstraint];
}
并在 initWithCoder: 中运行它。此外,我已将以下内容添加到我的 UITableViewController 中:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
NSArray *visibleCells = [self.tableView visibleCells];
for (UITableViewCell *visibleCell in visibleCells) {
if ([visibleCell isKindOfClass:[FMSingleInputCell class]]) {
FMSingleInputCell *singleInputCell = (FMSingleInputCell *)visibleCell;
[singleInputCell setupLabelWidthConstraint];
}
}
}
这就是诀窍! (LABEL_LANDSCAPE_WIDTH 和 LABEL_PORTRAIT_WIDTH 定义为 100.f 和 175.f)
关于iphone - iOS + 自动布局 : UITableViewCell label + textfield width with rotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629392/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
这里有一个很好的答案解释了如何在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”结果的
是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我