我有一个popover控制器,我在代码中实例化并传递给它的contentViewController,这一切都很有效。当contentViewController因为消息标签显示一个任意长的字符串列表而调整大小时,问题就是LATER。
我指的UILabel有文字...... '验证和错误消息框'
我希望能够以某种方式配置布局约束,以便当用户在文本框中输入值,然后点击接受按钮时,如果我有任何验证错误要呈现给他们,我可以通过将它们添加到标签(我已经设置为在需要时接受多行数据)来实现,添加时,如果它们恰好需要5行显示,那么标签将向下推UITextField和接受/取消按钮,以便它可以显示所有标签内容。好吧,我已经能够做到这一点,并且contentViewController按预期调整大小。问题是,包含它的弹出控制器不会调整大小,所以会发生什么,我的接受/取消按钮被推离弹出窗体的底部边缘,因此用户甚至无法访问它们。
我是否可以设置任何限制,以强制弹出控制器的高度放大,以便UI控制在我的“验证和错误”消息框中。当有多行验证文本时,是否没有从底部边缘推下来?
我在代码中创建popoverController,所以我假设我还需要在代码中执行约束。
答案 0 :(得分:5)
这是我如何解决它,它没有使用约束。我可以找到的关于使用AutoLayout和约束的所有内容都没有有用的约束解决方案。
当我创建弹出窗口时,在显示它之前,我使用此代码......
CGSize newSize = [theContentViewController.view systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
CGRect newFrame = CGRectMake(0, 0, newSize.width, newSize.height);
[theContentViewController.view setFrame:newFrame];
[thePopover setPopoverContentSize:theContentViewController.view.frame.size animated:YES];
然后,在用户按下Accept按钮后,在contentViewController中,我评估他们的输入是否可接受,并用任何消息更新标签,然后我调用上面相同的代码,这将动画到新的大小以适应大型消息或其他任何内容。
答案 1 :(得分:0)
2018年答案:将其放入ContentViewController
peak1P <- seq(200, 300, 1) % Likely Peak Positions
peak2P <- seq(400, 550, 1)
peak3P <- seq(600,750, 1)
peak1A <- seq(0, 0.6, 1) % Likely Peak Absorbance
peak2A <- seq(0, 0.5, 1)
peak3A <- seq(0, 0.3, 1)
peak1B <- seq(0, 20, 1) # Likely Peak Bandwidth
peak2B <- seq(0, 20, 1)
peak3B <- seq(100,300, 1)
# Individual Peak Models
AbsG1 = peak1A*exp((-4*log(2))*(((((WvLnV/1500)-peak1P/1500)^2))/(peak1B/1500)))
AbsG2 = peak2A*exp((-4*log(2))*(((((WvLnV/1500)-peak2P/1500)^2))/(peak2B/1500)))
AbsG3 = peak3A*exp((-4*log(2))*(((((WvLnV/1500)-peak3P/1500)^2))/(peak3B/1500)))
# Final Fit to compare with Data
AbsF <- AbsG1 + AbsG2 + AbsG3