Tag: nslayoutconstraint

Swift如何改善自动版式?

如果使用自动布局,请举手。 以编程方式举手。 如果您想要一种简单的书写方式,请举手。 有很多开源项目试图使处理自动版式变得更容易。 (即砌体,PureLayout,制图) 我在这里通过介绍DHConstraintBuilder向您展示更快捷的方法。 您可能会想,“我为什么要打扰您?”,这是一个很公平的问题。 DHConstraintBuilder可以使用最少的代码来表达约束,但又不会失去任何意义。 它可以直观地显示约束的外观,同时生成有用的约束。 假设您有两个视图,并且要在它们之间放置默认填充。 使用自动版式时,该距离通常为8像素。 下面是将DHConstraintBuilder与NSLayoutConstraint进行比较的示例。 代码看起来如何? (以下两个示例在功能上等效) 使用NSLayoutConstraint: 使用DHConstraintBuilder: 让我们分解一下: // 1 -greenView和redView在水平轴上之间有15.5像素 -greenView在其超级视图的前导约束上具有默认填充 -redView在其超级视图的尾随约束上具有默认填充 // 2 -blueView在其超级视图的前导约束上具有默认填充 -blueView在其超级视图的尾随约束上具有默认填充 // 3 -greenView在其超级视图的顶部约束上具有默认填充 -greenView在垂直轴上具有与blueView的默认距离 -blueView在其超级视图的底部具有默认填充 // 4 -redView在其超级视图的顶部约束上具有默认填充 -redview在垂直轴上具有与blueView的默认距离 // 5 -greenView和redView具有相等的宽度 // 6 -greenview和blueView的高度相等 我可能有偏见,但是DHConstraintBuilder确实看起来更小,更简洁并且更易于阅读。 它消除了两个常见错误:忘记将translatesAutoResizingMaskIntoConstraints设置为false,以及忘记将视图添加到父视图。 可能突出的一件事是使用 ()|-^ ^-| () 同样,这是Visual Format对 |- -| 不用说,但是此API面向swift3。它必须是swift,才能利用重载的运算符。 DHConstraintBuilder在GitHub上可用,并且为ios 8及更高版本。 这是我的第一个开源项目。 […]

使用EasyPeasy III掌握自动版式:关系

到目前为止,您已经掌握了材料,您必须对EasyPeasy的工作方式,其语法和自动版式的基础知识有很好的了解。 关系允许您根据其他视图的约束来放置视图或调整视图的大小。 例如,将一个视图放置在另一个视图的左侧10px ,或将宽度设置为等于另一个视图的宽度。 职位关系 在上面的屏幕截图中,我们在标题下方放置了一个20px的按钮。 为此,您只需要创建一个常量为20.0的Top属性,并按如下所示指定关系: 现在,该关系在button Top属性和header Top属性之间。 .to方法接受第二个参数,您可以实现此目的。 现在,我们的蓝色按钮看起来有点肿,这是因为我们指定的height等于标题的height 。 header宽度为320px而button宽度为160px 。

以编程方式应用自动布局约束时无法同时满足约束

无法同时满足约束。 下面列表中的至less一个约束可能是你不想要的。 尝试这个: (1)看看每个约束,试图找出你不期望的; (2)find添加不需要的约束或约束的代码并修复它。 ( "<NSLayoutConstraint:0x7f844b716390 H:|-(30)-[UIButton:0x7f844b4be3c0'LOGIN'] (Names: '|':UIView:0x7f844b492a80 )>", "<NSLayoutConstraint:0x7f844b706ee0 H:[UIButton:0x7f844b4be3c0'LOGIN'(100)]>", "<NSLayoutConstraint:0x7f844b705dd0 H:[UIButton:0x7f844b4be3c0'LOGIN']-(80)-[UIButton:0x7f844b4c0520'SIGNUP']>", "<NSLayoutConstraint:0x7f844b706f30 H:[UIButton:0x7f844b4c0520'SIGNUP'(100)]>", "<NSLayoutConstraint:0x7f844b7147c0 H:[UIButton:0x7f844b4c0520'SIGNUP']-(30)-| (Names: '|':UIView:0x7f844b492a80 )>", "<NSLayoutConstraint:0x7f844b519f70 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f844b492a80(375)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7f844b705dd0 H:[UIButton:0x7f844b4be3c0'LOGIN']-(80)-[UIButton:0x7f844b4c0520'SIGNUP']>

我有一个UILabel自动布局定位在屏幕上,但是当我隐藏导航栏,它会导致标签“抽搐”第二个

项目: http : //cl.ly/1T2K0V3w1P21 通过这个项目可以看出,这只是一个简单的下载,仅仅是视图控制器。 基本上,我的UILabel与自动布局保持完美的地方,但是当我隐藏导航栏(你可以通过在任何地方点击屏幕在项目中做到这一点),导致它抽搐。 不pipe导航栏上发生了什么,我如何使它保持在完全相同的位置? 它似乎是animation(我想)导致AutoLayout感到困惑。 以下是标签上的限制条件: 任何人都可以提供一些build议,我做错了什么?

NSLayoutConstraint并确定哪个子视图更宽

我在子类容器UIView创build一个UISwitch和一个UILabel : UISwitch *toggleSwitch = [UISwitch new]; toggleSwitch.translatesAutoresizingMaskIntoConstraints = FALSE; [toggleSwitch addTarget:self action:@selector(switchToggleDetected:) forControlEvents:UIControlEventValueChanged]; self.toggleSwitch = toggleSwitch; [self addSubview:toggleSwitch]; UILabel *label = [UILabel new]; label.translatesAutoresizingMaskIntoConstraints = FALSE; label.textAlignment = NSTextAlignmentCenter; label.textColor = [UIColor whiteColor]; label.font = [UIFont fontWithName:HELVETICA_FONT_STYLE_BOLD size:10.0]; label.text = [self.text uppercaseString]; self.label = label; [self addSubview:label]; [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[toggleSwitch]-5-[label]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:NSDictionaryOfVariableBindings(toggleSwitch, label)]]; […]

UIScrollView和约束问题

我创build一个UIScrollView: // datasetSubView.m UIScrollView *scrollView = [UIScrollView new]; scrollView.translatesAutoresizingMaskIntoConstraints = FALSE; scrollView.userInteractionEnabled = TRUE; scrollView.scrollEnabled = TRUE; scrollView.backgroundColor = [UIColor whiteColor]; scrollView.alpha = 0; self.filterListView = scrollView; 然后在我的UIViewController,我添加滚动视图,并给它一个大小: [self.view addSubview:self.datasetSubBar.filterListView]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[filterListView]|" options:0 metrics:nil views:@{@"filterListView": self.datasetSubBar.filterListView}]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[filterListView][filtersSubBar]" options:0 metrics:nil views:@{@"filterListView": self.datasetSubBar.filterListView, @"filtersSubBar" : self.datasetSubBar.filtersSubBar}]]; [self.view layoutIfNeeded]; //gives the filterListView its frame 然后我创build一个自定义UIView放置在滚动视图: […]

在iOS 7上的UITableViewCell之间绘制自定义分隔线

因为我有一些麻烦使用UITableViewCell之间的默认分隔线我想用我自己的。 所以我使用自动布局。 C#是我使用的语言。 您当然可以在Objective-C中提供解决scheme。 在我的自定义单元格的构造函数中添加我的视图UIView : separator = new DividerView (); ContentView.Superview.AddSubview (separator); 必须将其添加到超视图,否则它不会覆盖附件区域。 在updateConstraints我设置了我的约束: separator.TranslatesAutoresizingMaskIntoConstraints = false; this.ContentView.Superview.AddConstraints (NSLayoutConstraint.FromVisualFormat ("H:|[separator]|", (NSLayoutFormatOptions)0, null, viewsDictionary)); this.ContentView.Superview.AddConstraints (NSLayoutConstraint.FromVisualFormat ("V:|-(82@999)-[separator(1)]|", (NSLayoutFormatOptions)0, null, viewsDictionary)); 例如,这在iOS 8上工作,但不在iOS 7上。另外这个约束V:[separator(1)]| 可以在iOS 8上工作,但不能在iOS 7上工作。

为UIScrollView设置约束

需要一些帮助来设置约束到UIScrollView。 我试图按照这里的指示: https : //developer.apple.com/library/ios/technotes/tn2154/_index.html (混合的方法)。 为UIScrollView设置4个边界约束。 然后设置4个双面约束到buttonContainer。 结果是: 但是,xcode是给出这个错误消息: 如果我尝试Xcode的build议,滚动视图不会滚动,或根本不显示。 任何想法这里有什么问题?

如何通过故事板自动布局来适应tableview到导航栏下的superview

我想创build一个滚动禁用的tableview将填充导航栏下方的视图。 最后,我已经设法做到了,但这不是正确的方法,因为我给了tableview的负64边界(状态栏+导航栏)。 我正在从故事板分配我的约束。 我已经尝试了许多其他的约束与表视图像从四边或等宽+相等的高度+中心水平+中心垂直零约束没有任何工作。 什么是解决这个问题的正确途径。 下面是故事板的屏幕截图。

内容拥抱优先级dynamic单元格大小

最近我有一个复杂的自动布局情况已经解决(感谢@Catalina吨)。 目前我遇到了内容拥抱优先问题。 我有4个dynamic标签可能包含巨大的文本,所以单元格应该适合内容。 有了目前的限制和优先事项,如果我把巨大的文本给所有的dynamic标签,它完美的作品(虽然其中一个将不会完全显示,而是会用点来裁剪)。 如果我将第三个标签的文本设置为一个巨大的自动布局变得疯狂…我得到这样的东西: 而我希望所有的标签都会被安排。 演示项目 。 如何解决这个问题? 先谢谢你!