Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在纵向和横向中使用自动布局_Ios_Objective C_Xcode_Autolayout - Fatal编程技术网

Ios 在纵向和横向中使用自动布局

Ios 在纵向和横向中使用自动布局,ios,objective-c,xcode,autolayout,Ios,Objective C,Xcode,Autolayout,自动布局,因为它是好的,让我疯狂的约束。我在IB中设计了纵向模式,但无法获得所需的横向方向 请注意,当方向更改为横向时,UIImageView块之间的间距将减小,SAMPLE text的文本对齐方式将更改为右对齐 目前,我已经为它的工作添加了一些限制。但是,我需要保持UIImageView块之间的空间固定,因此它在纵向上看起来很狭窄,在横向上看起来很好。我需要它在纵向上均匀分布,在横向上压缩(如上图所示)。类似地,当前我的约束会显示文本,但它不会将文本保持在屏幕中央并右对齐 这在自动布局中是可

自动布局,因为它是好的,让我疯狂的约束。我在IB中设计了纵向模式,但无法获得所需的横向方向

请注意,当方向更改为横向时,UIImageView块之间的间距将减小,
SAMPLE text
的文本对齐方式将更改为右对齐

目前,我已经为它的工作添加了一些限制。但是,我需要保持UIImageView块之间的空间固定,因此它在纵向上看起来很狭窄,在横向上看起来很好。我需要它在纵向上均匀分布,在横向上压缩(如上图所示)。类似地,当前我的约束会显示文本,但它不会将文本保持在屏幕中央并右对齐


这在自动布局中是可能的吗?如果是,怎么做?非常感谢您的帮助。

是的,使用自动布局确实可以做到这一点。通过一系列步骤,我认为这些步骤可能太长,无法作为答案发布,您可以保留图像视图之间的间距,并保持文本的对齐方式不变

基本上,您必须固定每个ImageView的一个角并删除一些约束,以便在更改方向时不会自动压缩间距

关于如何做到这一点的完整解释(几乎完全符合您的要求)。你可以在这页的中间找到它


希望这就是您想要的。

是的,可以通过自动布局完成。如果希望视图之间的间距根据方向增加和/或减少,可以使用约束的小于或等于或大于或等于关系(而不是等于),这允许距离增大或缩小:


玩转它,你应该能够得到你想要的东西。

有几种方法可以实现这一点。一种方法是将3个图像视图包含在一个UIView中。将“顶部”和“底部”图像视图约束分别指定给“顶部”和“底部”,并将中间图像视图指定给“中心”约束。为该封闭视图指定一个固定的高度和宽度,并对控制器视图的顶部进行约束。为此封闭视图的高度约束创建一个IBOutlet,并在旋转时进行更改。在下面的示例中,我给了它350的纵向高度:

-(void)updateViewConstraints {
    [super updateViewConstraints];
    if (self.view.bounds.size.height < self.view.bounds.size.width) {
        self.heightCon.constant = self.view.bounds.size.height;
    }else{
        self.heightCon.constant = 350;
    }
}
-(void)updateViewConstraints{
[super updateViewConstraints];
if(self.view.bounds.size.height

至于标签,最简单的方法是删除约束(底部和中心),并在旋转时添加尾随和中心。

嘿,目前压缩和文本对齐没有改变。我想压缩空间,改变文本对齐方式。你试过我给你的链接吗?您要压缩哪个空间?从你的问题来看,似乎你不希望它们被压缩在景观中。你们真的想要压缩它们吗?是的,我想要这些块在纵向上被隔开,在横向上被压缩,这样它们就符合图中所示的方式。我早些时候尝试了链接,但无法解决问题。我会再读一遍:)谢谢你的回复。我试图改变这种限制。但是,一旦我将其更改为“等于”以外的任何内容,它就会为水平定位提供不明确的布局警告。您需要向顶部和底部添加其他约束
UIImageView
,以便在它们之间的约束中使用=不会不明确。我需要UIImage的位置在垂直方向上是可变的,因此,无论我添加什么约束,它都是以。但xcode希望我至少为垂直方向添加一个已修复的约束。如何添加固定约束并保持其灵活性?这很棘手。您必须进行实验,包括约束优先级。但是,如果您尝试像Xcode那样思考,并说“鉴于这里的限制,我可以明确地定位这个视图吗?”,这会有所帮助。这就像解决一个逻辑难题,一开始并不总是容易的。为了实现灵活的间距,下一个问题可能很有用:要在运行时使用视图约束,这听起来很有帮助。但是,我的视图没有响应-(void)WillAnimateRotationInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration..我尝试记录
interfaceOrientation
但输出中没有显示任何内容..因此我已注册设备的方向通知,但这会使动画变得迟钝。。您知道为什么视图没有响应您所使用的方法吗mentioned@GauravWadhwani,我不知道为什么不叫它。我更改了帖子,将代码放入UpdateConstraint中。看看这是否有效。有效,非常感谢!!!我花了一整天在这上面。我只需要加上这些块,马上标出你的答案。再次感谢:)我们不能通过避免编写上面的代码来使用Xibs吗?@NagaMalleshMaddali,是的,您可以使用Xibs(以及在它们之间切换的代码)来实现这一点,但问题特别提出是否可以使用自动布局来实现。