标签: autolayout

我是否需要更新约束我改变一个UIImageView的位置后,

我是ios的新手,并且UIImageView我的内部viewController有限制.我也在使用autolayout这个应用程序.在某种情况下,我允许用户imageView使用Pan Gesture 移动.移动后是否需要更新该图像的约束?如果没有必要,我应该在移动后更新约束吗?如果对其中任何一个都是肯定的,那么更新约束的最有效方法是什么?

uigesturerecognizer ios uipangesturerecognizer autolayout swift

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

动态更改自动布局

我必须显示3个标签

LABEL1 | LABEL2 | LABEL3 //Horizontally

我希望这3个标签的宽度根据屏幕尺寸宽度平均分配

如何直接使用nib文件实现此目的?

谢谢

问题2

Label1 | Label2 | Lable3

//所有标签宽度相同

//所有标签都是视图调用X视图的子视图

Label1:身高是100

Label2:身高是150

Label3:身高是300

问:现在我希望X视图的高度为最大值(100,150,300)= 300

iphone xcode storyboard ios autolayout

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

垂直向滚动视图添加以编程方式创建的视图(iOS中的线性布局)

我想以编程方式将UIViews添加到具有自动布局约束的scrollView中.就像Android中的垂直线性布局一样.(在目标c中不迅速)

我在storyboard中的视图控制器内部有scrollview.所以基本上我想在垂直布局中创建和添加几个视图,而滚动视图中没有空格.我想根据视图高度动态设置滚动视图的容器大小.

每个视图都有标签,每个视图需要根据文本大小动态设置其高度.但是我可能需要稍后再说.

for (int i=0; i<10; i++)
{
    UIView *viewOne = UIView.new;
    [viewOne setTranslatesAutoresizingMaskIntoConstraints:NO];
    viewOne.backgroundColor = [UIColor redColor];
    NSDictionary *viewsDictionary = @{@"viewOne" : viewOne};
    NSDictionary *metricsDictionary = @{@"horizontalSpacing" : @10};

    [self.scrollview addSubview:viewOne];

    NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-horizontalSpacing-[viewOne]-horizontalSpacing-|"
                                                                             options:NSLayoutFormatDirectionLeadingToTrailing
                                                                             metrics:metricsDictionary
                                                                               views:viewsDictionary];

    NSArray *const_Height = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[viewOne(50)]"
                                                                    options:0
                                                                    metrics:nil
                                                                      views:viewsDictionary];

    [viewOne addConstraints:const_Height];
    [self.scrollview addConstraints:horizontalConstraints];
}
Run Code Online (Sandbox Code Playgroud)

使用该代码我可以添加视图但我需要在另一个下添加一个.

constraints objective-c ios autolayout

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

Autolayout:updateConstraints不会调用方向更改

我正在学习Auto布局如何在iOS中运行.为此我创建了一个示例单视图应用程序,它有一个视图控制器(初始视图控制器)和一个自定义视图(我们称之为示例视图).我使用自动布局约束将示例视图添加到Main.storyboard中的视图控制器.我在Sample View中添加了一个按钮和一个标签,并带有自动布局约束.我重写了SampleView.m中的layoutSubviews和updateConstraints方法.这些被覆盖的方法只会调用它们的超级实现.我为这两种方法添加了一个断点并开始调试应用程序.以下是我的观察

  1. 我发现在SampleView中的layoutSubviews方法之前调用updateConstraints.但是我读了几篇帖子/答案,其中提到在updateConstraints之前调用layoutSubviews.现在我很困惑什么是正确的机制?updateConstraint在layoutSubviews之前调用,反之亦然.自动布局系统如何工作?

  2. 当我将设备从纵向旋转到横向或从横向旋转到纵向时,我发现SampleView的updateConstraints方法不会自动调用(但是layoutSubviews方法会自动调用),而我读了一些帖子/答案,说明在旋转时, updateConstraints方法自动调用.我再次混淆哪一个是真的?

  3. 如果updateConstrains方法没有在方向更改时自动调用,那么当方向更改时,如何在视图层次结构中的所有视图上调用updateConstraint方法?将在父视图上调用setNeedsUpdateConstraint,是否会在该视图的所有子视图上调用updateConstraint?

iphone objective-c ios autolayout ios-autolayout

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

无法将iOS Autolayout乘数设为零

我正在尝试做的事情: 我正在尝试使用自动布局约束来动态显示/隐藏视图,但是我希望视图在隐藏时有效地占用0空间(因此常规的hidden属性对我)。

方法: 我正在使用NSLayoutConstraints以编程方式完成所有布局(请注意,使用Xamarin C#,而不是Objective c),因此我试图以编程方式在一组“可见”约束之间进行切换(正常布局,这始终可以正常工作)和“隐藏”约束,将宽度和高度设置为零。

我正在做一些基本测试,可以删除宽度约束,然后设置一个新的约束来执行我想做的任何事情。但是,每当我尝试定义一个乘数且常数为零的约束(更不用说添加到视图中)时,NSLayoutConstraint中的乘数就会神奇地变为1。例如,我的隐藏宽度约束定义为:

NSLayoutConstraint c1 = NSLayoutConstraint.Create(view, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0f, 0f);
Run Code Online (Sandbox Code Playgroud)

我检查约束c1,乘数为1且常数为0。view是要添加约束的视图(UIButton在这种情况下为a)。

问题:是否可以像这样将自动布局约束乘数设置为0?如果是这样,那么有什么特别的UIButton事情阻止我这样做吗?理想情况下,我希望几乎可以进行此显示/隐藏UIView

c# xamarin.ios ios autolayout xamarin

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

为什么使用Autolayout/Constraints而不是frame和layoutSubviews?

我为我的应用程序的启动屏幕实现了一个视图控制器,如下所示.我决定使用框架而不是autolayout,我想知道是否有任何理由在这里使用autolayout/constraints.

我不允许在我的应用程序上轮换,所以我看不出我会从约束中获得什么好处,因为我不喜欢使用界面构建器,我认为代码更清晰/更容易创建和布局框架.

我感谢任何输入 - 请找到下面的代码.

#import "LaunchViewController.h"
#import "RegisterTableViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface LaunchViewController ()

@property (nonatomic) UILabel *appLabel;
@property (nonatomic) UIButton *signUpButton;
@property (nonatomic) UIButton *loginButton;

@end

@implementation LaunchViewController

#pragma mark - UIViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor standardBlackColor];
    [self layoutViews];
}

- (void)viewDidAppear {
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - UIView

- (void)layoutViews
{
    self.appLabel.frame = [self _appLabelFrame];
    self.loginButton.frame = [self …
Run Code Online (Sandbox Code Playgroud)

frame ios autolayout

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

在iOS中将界面从设备缩放到另一个的问题

这个问题真让人沮丧,让我发疯.

我已经阅读了有关AutoLayout等的所有内容,但它始终在发生.我的界面有一个视图,图像视图为背景,顶部有一个较小的子视图(对应于我图像中的一个字段).我已经尝试了所有的东西,但看起来子视图在切换设备时不会与我的图像相应地缩放.顺便说一句,IB预览并没有显示我在运行iOS模拟器时真正得到的东西,这是正常的吗?为什么?我做错了什么?我不知道还有什么可以尝试的!

http://i58.tinypic.com/34xqtc6.png

编辑:我无法发布图像:(

ios autolayout swift adaptive-ui

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

将视图的高度设置为等于另一个视图的宽度

我在故事板中偶然发现了一个有趣的问题.我正在使用约束.我想将视图高度设置为等于另一个视图的宽度.高度和宽度本身不是使用约束设置的,将根据屏幕大小在运行时设置.这可以在故事板中完成吗?

constraints ios uistoryboard autolayout nslayoutconstraint

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

如何使用autolayout将UILabel设置为UICell宽度的百分比

我想知道如何设置UILabel的宽度表示为Cell的总宽度的百分比?我正在使用AutoLayout.通常我会点击标签并将EqualsWidth设置为parentView,然后调整乘数,以便将宽度设置为parentWidth的%.但是使用InterfaceBuilder,该选项似乎在Cell中不可用. 在此输入图像描述

但是我想知道它可能与设置首选宽度有关:我正在使用ios8 +并且已经读过隐式宽度不适用于ios8?

在此输入图像描述

我希望实现的是标签1和标签3都是Cell的宽度的15%,标签2的前端和后端固定到UIImageView和Label 3,这将允许它根据宽度增加和缩小.设备. 在此输入图像描述

uitableview ios autolayout

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

如果仅支持一个方向,则需要Autolayout吗?

Autolayout是否需要为任何子视图设置,如果我的应用程序仅支持一个方向(例如,横向右侧),适用于所有UIViewControllers?

是的,当然在使用动画的情况下我同意.但对于正常情况,我需要AutoLayout吗?

注意:我使用的是XCode7,Swift,ios9

xcode autolayout swift

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