我是ios的新手,并且UIImageView我的内部viewController有限制.我也在使用autolayout这个应用程序.在某种情况下,我允许用户imageView使用Pan Gesture 移动.移动后是否需要更新该图像的约束?如果没有必要,我应该在移动后更新约束吗?如果对其中任何一个都是肯定的,那么更新约束的最有效方法是什么?
uigesturerecognizer ios uipangesturerecognizer autolayout swift
我必须显示3个标签
LABEL1 | LABEL2 | LABEL3 //Horizontally
我希望这3个标签的宽度根据屏幕尺寸宽度平均分配
如何直接使用nib文件实现此目的?
谢谢
问题2
Label1 | Label2 | Lable3
//所有标签宽度相同
//所有标签都是视图调用X视图的子视图
Label1:身高是100
Label2:身高是150
Label3:身高是300
问:现在我希望X视图的高度为最大值(100,150,300)= 300
我想以编程方式将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)
使用该代码我可以添加视图但我需要在另一个下添加一个.
我正在学习Auto布局如何在iOS中运行.为此我创建了一个示例单视图应用程序,它有一个视图控制器(初始视图控制器)和一个自定义视图(我们称之为示例视图).我使用自动布局约束将示例视图添加到Main.storyboard中的视图控制器.我在Sample View中添加了一个按钮和一个标签,并带有自动布局约束.我重写了SampleView.m中的layoutSubviews和updateConstraints方法.这些被覆盖的方法只会调用它们的超级实现.我为这两种方法添加了一个断点并开始调试应用程序.以下是我的观察
我发现在SampleView中的layoutSubviews方法之前调用updateConstraints.但是我读了几篇帖子/答案,其中提到在updateConstraints之前调用layoutSubviews.现在我很困惑什么是正确的机制?updateConstraint在layoutSubviews之前调用,反之亦然.自动布局系统如何工作?
当我将设备从纵向旋转到横向或从横向旋转到纵向时,我发现SampleView的updateConstraints方法不会自动调用(但是layoutSubviews方法会自动调用),而我读了一些帖子/答案,说明在旋转时, updateConstraints方法自动调用.我再次混淆哪一个是真的?
如果updateConstrains方法没有在方向更改时自动调用,那么当方向更改时,如何在视图层次结构中的所有视图上调用updateConstraint方法?将在父视图上调用setNeedsUpdateConstraint,是否会在该视图的所有子视图上调用updateConstraint?
我正在尝试做的事情: 我正在尝试使用自动布局约束来动态显示/隐藏视图,但是我希望视图在隐藏时有效地占用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。
我为我的应用程序的启动屏幕实现了一个视图控制器,如下所示.我决定使用框架而不是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) 这个问题真让人沮丧,让我发疯.
我已经阅读了有关AutoLayout等的所有内容,但它始终在发生.我的界面有一个视图,图像视图为背景,顶部有一个较小的子视图(对应于我图像中的一个字段).我已经尝试了所有的东西,但看起来子视图在切换设备时不会与我的图像相应地缩放.顺便说一句,IB预览并没有显示我在运行iOS模拟器时真正得到的东西,这是正常的吗?为什么?我做错了什么?我不知道还有什么可以尝试的!
http://i58.tinypic.com/34xqtc6.png
编辑:我无法发布图像:(
我在故事板中偶然发现了一个有趣的问题.我正在使用约束.我想将视图高度设置为等于另一个视图的宽度.高度和宽度本身不是使用约束设置的,将根据屏幕大小在运行时设置.这可以在故事板中完成吗?
Autolayout是否需要为任何子视图设置,如果我的应用程序仅支持一个方向(例如,横向右侧),适用于所有UIViewControllers?
是的,当然在使用动画的情况下我同意.但对于正常情况,我需要AutoLayout吗?
注意:我使用的是XCode7,Swift,ios9
autolayout ×10
ios ×9
swift ×3
constraints ×2
iphone ×2
objective-c ×2
xcode ×2
adaptive-ui ×1
c# ×1
frame ×1
storyboard ×1
uistoryboard ×1
uitableview ×1
xamarin ×1
xamarin.ios ×1