相关疑难解决方法(0)

如何使用Swift以编程方式添加约束

自上周以来我一直试图解决这个问题,而没有更进一步.好的,所以我需要在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)

uiview ios autolayout nslayoutconstraint swift

409
推荐指数
14
解决办法
38万
查看次数

UIScrollView扩展内容的内部大小,直到高度X,然后滚动

我基本上试图重现警报的标题和消息部分的行为.

在此输入图像描述

标题和消息标签似乎位于滚动视图中.如果标签文本增加,则警报高度也随着标签的固有内容大小而增加.但在某个高度,警报高度停止增加,标题和消息文本变为可滚动.

我读过的内容:

用品

堆栈溢出

答案可能在那里,但我无法抽象它.

我尝试过的:

我只关注具有两个标签的滚动视图,我试图做一个最小的例子,其中父视图将根据scrollview的内在高度调整大小.我玩过很多限制.这是一个组合(许多)组合不起作用:

在此输入图像描述

我使用过自动布局正常约束,甚至内在的内容大小.此外,我知道如何使用自动布局获得基本滚动视图.但是,我从未做过任何关于优先级和内容拥抱以及抗压缩性的事情.从我所做的阅读中,我对它们的含义有一种肤浅的理解,但我不知道如何在这种情况下应用它们.我的猜测是我需要对内容拥抱和优先级做些什么.

uiscrollview ios autolayout intrinsic-content-size

17
推荐指数
2
解决办法
4037
查看次数

旋转的视图是否与自动布局兼容?

我学会了如何使用仿射变换旋转视图(参见此处).我还了解了自动布局(参见此处此处),甚至是程序化的自动布局(参见此处此处).但是,我不知道如何让自动布局与旋转视图一起使用.

此图显示了我想要做的事情:

在此输入图像描述

我认为问题来自宽度和高度因旋转而变化.有没有办法让旋转视图填充它的超视图?是否有一些技巧可以使自动布局工作或旋转后它是不兼容的?

(我只学过Swift,但如果你更熟悉的话,我会很高兴通过Objective-C答案.)

更新

按照@ VinayJain的建议,我做了以下事情:

  • 将子视图边缘固定到故事板中的superview.
  • 为子视图的所有边上的间距约束创建了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.我只需要它来调整自己.然而,旋转混乱了.效果如下图所示:

在此输入图像描述

rotation ios autolayout

10
推荐指数
1
解决办法
1967
查看次数

如何使用 iOS 在 Storyboard 上创建 ImageView 中心?

我正在尝试在 Xcode 7 和 iOS 9 中使用 iOS 故事板创建通用应用程序。在故事板概念中,我可以看到很多方法(自动布局、自动约束、自适应 UI 等)。我对这些设计方法感到困惑。请给我一个在所有 iPhone 和 iPad 上图像视图显示在中心的解决方案。

storyboard ios

5
推荐指数
1
解决办法
2万
查看次数

如何防止 Storyboard 调整(拉伸)以 UIView 为中心的 UIImage 的大小?

我有一个通用的 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 文档列出的所有比 …

xcode constraints storyboard uiimageview xcode8

1
推荐指数
1
解决办法
1987
查看次数