Tag: 自动布局

Autolayout和比例定位

我想我的情况应该是一个常见的问题,但我对AutoLayout真的很陌生,对我来说这似乎特别复杂: 我想做一个适合3.5英寸和4英寸屏幕的布局。 这是4英寸显示器的视图: 这里是3.5英寸显示器的视图: 我所需要的是基本上使分割的控件和黄色和蓝色视图之间的空间成正比的屏幕大小,我想。 我的解决scheme(不起作用): 1)使用less or equal to ,为段控件的顶部/底部垂直空间添加约束。 2)向其他视图添加约束以保持其位置(例如,蓝色视图的主视图的底部间距等于零,黄色视图具有固定的顶部间距)。 在我看来,只有当主视图缩放时,点1)的约束才会缩小…但不会发生…并且段视图仅移动到其他视图的后面,并将间距定义为“较less那么还是等于“的定义。 我怎样才能解决这个共同的问题? 我是否需要为这种情况创build隔离视图? 在这种情况下,你怎么设置它们?

嵌套视图中的拥抱和压缩阻力

我试图了解如何拥抱和抗压力真的工作。 我有这种情况下,我需要两个标签在左边(绿色容器内)和两个标签在右边(蓝色容器内)。 如图所示,我希望绿色容器拥抱内容(Android的wrap content )和蓝色容器以填充剩余空间(Android的fill_parent )。 我想我可以在绿色视图中添加拥抱/压缩优先级,例如: greenView.setContentHuggingPriority( UILayoutPriorityDefaultHigh, forAxis: .Horizontal) greenView.setContentCompressionResistancePriority( UILayoutPriorityDefaultHigh, forAxis: .Horizontal) 但它似乎没有按预期工作。 我必须将这些约束应用于(红色和黄色)标签。 任何人都知道原因? 一些想法(编辑): 从Ken的回答来看,你必须设置拥抱/压缩而不是容器视图的标签。 在这个问题的例子中,例如,我将设置一个750(高)和一个1000(必需)的阻力在左边的标签。 由于标签默认值为251(低+1),电阻值为750(高),因此左侧(750> 251和1000> 750)的标签的拥抱和压缩将更大。 与此同时,压缩会比标签(1000> 750)内的拥抱更大。 这样,左边的标签会试图拥抱他们的内容,但不会压缩它的内容。 例如,红色标签不能完全包装其内容,因为黄色标签不想压缩。 唷!

如何在IOS中设置视图的最大宽度?

我的应用程序有一个基本的login屏幕,外框和一些文本框和button。 我设置框来填满屏幕。 但是,在一些设备上,这个盒子会很大。 我想设置一个最大的宽度和高度。 如何将最大宽度和高度设置为视图?

将自动布局与核心animation结合在一起

我是新来的核心animation,我正在努力与一件事 – 如何结合自动布局与核心animation。 其实我在核心animation的文档中只发现了一句,这里引用了Autolayout 请记住将视图约束更新为animation的一部分如果您使用基于约束的布局规则来pipe理视图的位置,则必须删除可能会干扰animation的任何约束,作为configuration该animation的一部分。 约束会影响您对视图的位置或大小所做的任何更改。 它们也影响视图与其子视图之间的关系。 如果您正在对这些项目中的任何项目进行animation更改,则可以删除约束,进行更改,然后应用所需的任何新约束。 但是,正如我所尝试过的,并不像看上去那样两面派。 这是我的情况。 我devise了一个广泛使用自动布局的滑动菜单。 这是这个观点的外观。 我使用自动布局约束来强制滑动菜单中的这些项目的比例定位。 其实这里有很多的限制,我不想在我的问题中发表所有这些,甚至可能是他们不需要直接回答这个问题,但是如果你需要他们,我可以更新那些post限制。 您在gif中看到的animation仅通过自动布局来达到。 我只是添加了出口到滑动菜单的高度约束,并以这种方式改变它:(代码是用Xamarin Monotouch编写的,但是我相信应该清楚这里为纯iOS开发者所做的) private void AnimateSlideMenuAppearance() { float height; if (isSlideMenuShown) { height = 0; } else { height = slideMenuHeight; } UIView.Animate (0.4, delegate { this.slideMenuHeightConstraint.Constant = height; this.View.LayoutIfNeeded (); }, delegate { isSlideMenuShown = !isSlideMenuShown; }); } 现在我想获得更复杂的外观过渡。 点击这里看看我想达到的效果。 […]

每当我打开故事板时,错位的意见

我正在使用一些有自动布局的元素定位的ViewController的故事板。 每当我打开故事板, 即使我修好所有的视图,我也会弄错位置。 我必须一次又一次地更新帧。 有没有什么办法解决这一问题? 我正在使用xcode 6。

AutoLayout与旋转的UI元素

我一直在教自己使用代码Auto Layout (即避免接口生成器)。 我有一个观点,我想设置Auto Layout 。 它有3个UILabels是水平的,一个是垂直的。 Sort of like this. ——————————————— | — ———————————– | | | | | | | | | | ———————————– | | | | ———————————– | | | | | | | | | | ———————————– | | | | ———————————– | | | | | | | | […]

使用“自动布局”可在resize时均等地更改空格

如果我在我的应用程序中有3个子视图(作为示例)的视图,它们之间的间距如下所示: TOP – 40分 – SUBVIEW 1 – 60分 – SUBVIEW 2 – 80分 – SUBVIEW 3 – 80分 – BOTTOM 我了解如何使用自动布局来确保每个子视图保持高度和宽度,并且我可以将所有内容在3.5或4英寸的iPhone屏幕上alignment。 但是我不能确定我需要做什么样的约束,所以如果它对准了一个3.5英寸的屏幕,然后去了一个4英寸的屏幕,每一个间距都会按比例增加(例如,40点将会到达47点,60至71,80至95或其附近)。 这可能吗? 还是我需要使所有的元素之间的间距相等? (如果是的话,我怎样才能让它平等调整?) 我是新来的汽车布局,所以如果我错过了什么,或者没有说清楚我的意思,请让我知道,谢谢。

AutoLayout的问题与在NIB文件中定义并在StoryBoard中使用的自定义视图

我已经在NIB文件中定义了一个自定义的视图,并且想在一个StoryBoard中实例化一个副本,但是我遇到了有关自动布局的问题。 在一个简单的例子中,自定义视图具有固定大小的单个标签并且垂直和水平居中,全部使用自动布局。 文件所有者被设置为我的class级,它有一个出口到顶视图。 在自定义视图实现中,我执行: – (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if(self) { [[NSBundle mainBundle] loadNibNamed:@"FMCompassView" owner:self options:nil]; [self addSubview:self.topView]; } return self; } 现在,在我的故事板中,我添加了一个UIView,将它的类设置为我的自定义类,然后再使用自动布局将其设置为在页面上的大小和居中。 而我的小工具的位置和大小正确,但它的内容不resize,如下所示: 从NIB加载之后,我尝试添加更多的约束条件,如下所示: UIView* subV = self.topView; NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(subV); [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[subV]|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewsDictionary]]; [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[subV]|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:viewsDictionary]]; 但是这会导致无效的布局限制。 任何想法如何得到这个工作? 干杯!

如何在风景上调整自定义UITableView分隔符的大小,并防止消失

我已经决定以编程方式创build我自己的UITableView分隔线,因为我需要很好地控制在每个单独的UITableViewCell上方和/或下方显示分隔符。 我的tableView有静态单元格,所以我不在cellForRowAtIndexPath创build分隔符。 相反,我有property为每个单元格,并在viewDidLoad ,我需要添加一个顶部和/或底部的分隔符。 这是工作,直到我旋转到风景,然后分隔线不伸展,以填补屏幕 – 它当然仍然是在创build时相同的宽度。 我没有看到我可以自动调整它们以适应屏幕的宽度。 我尝试添加自动布局约束(前导,尾随,顶部/底部),但由于某种原因,它不工作 – 宽度不会改变,但没有错误消息logging,以指示约束的任何错误。 分隔线有时也会在滚动或旋转时消失,如果我注释掉自动布局约束,那么它们不会消失。 那么如何使我的自定义单元格分隔符始终伸展以在旋转时填充设备宽度,以及如何防止它们消失? 如果以不同的方式创build自定义单元分隔符会更容易/更好,我愿意这样做。 我只是不知道如何做到这一点,除了我的方法,当细胞是静态的。 我考虑在Storyboard中创build视图,并以可视化的方式设置约束,但这不等同于我以编程方式进行的操作吗? 如果他们是dynamic单元格,我会在cellForRowAtIndexPath 。 //In viewDidLoad: [self addTopSeparatorForCell:self.myCell]; //Helper method – (void)addTopSeparatorForCell:(UITableViewCell *)cell { UIView *topSeparator = [[UIView alloc] initWithFrame:CGRectMake(15, 1, cell.contentView.frame.size.width, 0.5)]; //add CALayer to preserve line separator visibility when row is highlighted CALayer *backgroundColorLayer = [CALayer layer]; backgroundColorLayer.frame = […]

根据标题自动调整UIButton高度 – AutoLayout ON

基本上标题解释了这个问题。 使用XCode,我有这个button,我用不同的文本来源填充它的标题(有些是长文本一些短)。 我只是希望该button使用Autolayoutdynamic调整内容。 事情不起作用: sizeToFit ; 设置高度约束> = x; 设置button的框架高度= titleLabel高度。 似乎没有人知道互联网,我不知道怎么可能? 我认为是一个button的最常见的function之一。 有人知道一个办法来帮助我吗? 我在做这个想法有什么问题吗? 有没有其他方法来实现这一目标? 谢谢任何会回答的人。 真。