自上周以来我一直试图解决这个问题,而没有更进一步.好的,所以我需要在Swift中以编程方式应用一些约束 来使用这段代码:UIView
var new_view:UIView! = UIView(frame: CGRectMake(0, 0, 100, 100));
new_view.backgroundColor = UIColor.redColor();
view.addSubview(new_view);
var constX:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0);
self.view.addConstraint(constX);
var constY:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0);
self.view.addConstraint(constY);
var constW:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: new_view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0);
self.view.addConstraint(constW);
var constH:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: …Run Code Online (Sandbox Code Playgroud) 我基本上试图重现警报的标题和消息部分的行为.
标题和消息标签似乎位于滚动视图中.如果标签文本增加,则警报高度也随着标签的固有内容大小而增加.但在某个高度,警报高度停止增加,标题和消息文本变为可滚动.
我读过的内容:
用品
堆栈溢出
答案可能在那里,但我无法抽象它.
我尝试过的:
我只关注具有两个标签的滚动视图,我试图做一个最小的例子,其中父视图将根据scrollview的内在高度调整大小.我玩过很多限制.这是一个组合(许多)组合不起作用:
我使用过自动布局和正常约束,甚至内在的内容大小.此外,我知道如何使用自动布局获得基本滚动视图.但是,我从未做过任何关于优先级和内容拥抱以及抗压缩性的事情.从我所做的阅读中,我对它们的含义有一种肤浅的理解,但我不知道如何在这种情况下应用它们.我的猜测是我需要对内容拥抱和优先级做些什么.
我学会了如何使用仿射变换旋转视图(参见此处).我还了解了自动布局(参见此处和此处),甚至是程序化的自动布局(参见此处和此处).但是,我不知道如何让自动布局与旋转视图一起使用.
此图显示了我想要做的事情:

我认为问题来自宽度和高度因旋转而变化.有没有办法让旋转视图填充它的超视图?是否有一些技巧可以使自动布局工作或旋转后它是不兼容的?
(我只学过Swift,但如果你更熟悉的话,我会很高兴通过Objective-C答案.)
按照@ VinayJain的建议,我做了以下事情:
为子视图的所有边上的间距约束创建了IBOutlets.
@IBOutlet weak var rightSpace: NSLayoutConstraint!
@IBOutlet weak var leftSpace: NSLayoutConstraint!
@IBOutlet weak var topSpace: NSLayoutConstraint!
@IBOutlet weak var bottomSpace: NSLayoutConstraint!
Run Code Online (Sandbox Code Playgroud)旋转子视图
subview.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
Run Code Online (Sandbox Code Playgroud)改变了网点的限制
self.rightSpace.constant = CGFloat(0)
self.leftSpace.constant = CGFloat(0)
self.topSpace.constant = CGFloat(0)
self.bottomSpace.constant = CGFloat(0)
Run Code Online (Sandbox Code Playgroud)但就在这一点上,我意识到我并不需要改变间距值.我希望间距保持为0.我只需要它来调整自己.然而,旋转混乱了.效果如下图所示:
我正在尝试在 Xcode 7 和 iOS 9 中使用 iOS 故事板创建通用应用程序。在故事板概念中,我可以看到很多方法(自动布局、自动约束、自适应 UI 等)。我对这些设计方法感到困惑。请给我一个在所有 iPhone 和 iPad 上图像视图显示在中心的解决方案。
我有一个通用的 iOS 应用程序,并且正在尝试从旧式启动图像移动到故事板启动屏幕上的简单居中图像,所以我有一个适用于所有设备的故事板。当应用程序在尺寸大于图像的设备上运行时,我的图像(640x1136,iPhone 5s 尺寸)不需要被拉伸——换句话说,UIView 的背景颜色应该出现在较大设备上的图像周围。出于调试目的,我将视图背景颜色更改为艳丽的 Lime。
根据最高投票的答案(Suragch 的),我按照SO 帖子中的指示在 UIImageView 上定义了 2 个约束,实际上还必须遵循已接受的答案的建议来添加额外的 UIView,其中我的 UIImageView 将包含在其中。
UIImageView 的“内容模式”是中心,所以看起来应该没有拉伸。
在图片中注意 UIImageView 的 Xcode 大小检查器设置。UIView 具有 iPhone 7 大小的尺寸 (750x1334),因此因为 iPhone 比我的图像高,所以 UIImageView 的位置使其 X 为 55,Y 为 99。宽度和高度与图像本身相同 (640x1136)。
当我在模拟器中运行 iPhone 7 时,它看起来应该与 Xcode 的 Interface Builder 显示的完全一样(图像周围出现石灰色,但是,对于任何大于 iPhone 5s 或 SE 的设备,它看起来就像我所看到的图片附加(iPad Air,仅供参考)。您可以看出图像必须垂直拉伸很多,因为图像只有 1136 高。
我附上了 iPhone 7(模拟器)iPad Air 和 iPad Pro 的屏幕截图。请注意,iPad Air 的左右边缘出现了水平的石灰色条纹。请注意,当涉及到 iPad Pro 时,石灰背景颜色开始显示在图像上方。就好像在较小的设备上,系统正在拉伸 UIImageView,但是随着设备屏幕尺寸的增加,这最终会停止,直到对于最大的(Pro),您实际上可以看到周围的背景。对于Apple 文档中列出的所有比 …
ios ×4
autolayout ×3
storyboard ×2
constraints ×1
rotation ×1
swift ×1
uiimageview ×1
uiscrollview ×1
uiview ×1
xcode ×1
xcode8 ×1