Tag: nslayoutconstraint

所有这些自动布局更新方法有什么区别? 都需要吗?

在下面的代码中,这四个方法被称为布局推理。 我有点困惑,为什么他们都需要,但是他们做了什么不同的事情。 他们在这个过程中使用自动布局使单元格的高度dynamic化。 (从这个问题从这个知识库采取)。 [cell setNeedsUpdateConstraints]; [cell updateConstraintsIfNeeded]; [cell.contentView setNeedsLayout]; [cell.contentView layoutIfNeeded]; 这是从这个单元格的代码块的高度: – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { RJTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; [cell updateFonts]; NSDictionary *dataSourceItem = [self.model.dataSource objectAtIndex:indexPath.row]; cell.titleLabel.text = [dataSourceItem valueForKey:@"title"]; cell.bodyLabel.text = [dataSourceItem valueForKey:@"body"]; cell.bodyLabel.preferredMaxLayoutWidth = tableView.bounds.size.width – (kLabelHorizontalInsets * 2.0f); [cell setNeedsUpdateConstraints]; [cell updateConstraintsIfNeeded]; [cell.contentView setNeedsLayout]; [cell.contentView layoutIfNeeded]; CGFloat […]

我希望两个button具有相同的宽度,并使用自动布局按比例放置在屏幕顶部的所有屏幕尺寸中。

附加我打算devise的视图。 我想定位的button相对于超视图和他们的宽度和高度必须成比例增加屏幕尺寸,而不是保持不变。 附加屏幕预览:

防止界面生成器自动创build约束?

我在这里创build了一个演示项目。 我有一个视图,我在.xib文件中创build了一个ScrollView。 在界面生成器中,我没有设置任何约束。 在我的viewDidLoad方法中,我使用SnapKit设置约束: scrollView.snp_makeConstraints { (make) -> Void in make.edges.equalTo(self.view) } 当我运行代码时,我得到以下控制台输出: Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that […]

某种“全球”的IBDesignables?

在故事板中有一个UIView,约束例如“0.1”比例高度。 想象一下,在许多不同的场景中,你有一个类似的约束“0.1”。 假设你想将0.1的值改为0.975。 你必须随时随地改变它。 有什么方法可以使用@IBInspectable和/或约束来创build一种“全局值” ? 这样你就可以一次把它们全部改变 ,并在故事板中一次查看结果。 (当然,在运行的时候,你可以用代码来传播,但最好在故事板上看到。) 请注意,例如,Wain的解决scheme完美地工作:您可以设置一次的值,并影响到应用程序的任何地方。 但不幸的是,它只能在运行时间,而不是在故事板上看到它。

如何以编程方式设置UILabel只有宽度和高度和约束

我想创build一个UILabel编程高度,宽度,然后我想添加约束,它也编程的定位UILabel。 更新: 我想要这样创build用户界面: 如何以编程方式创build这个UI 代码来创build一个标签label1类似地,我创build了两个标签label2和label3 UILabel *label1 = [[UILabel alloc]init]; label1.font = TitleFont; label1.numberOfLines=0; label1.text= @"Descriptions"; label1.lineBreakMode=NSLineBreakByWordWrapping; [label1 sizeToFit]; label1.backgroundColor=[UIColor blueColor]; label1.textColor=[UIColor blackColor]; label1.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:label1]; 现在我可以用这个代码添加水平约束条件了 [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label1]-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(label1)]]; 我也可以设置垂直约束与视图,但我无法设置从一个标签到另一个约束。

使用约束编程构buildtitleView(或者通常构造带约束的视图)

我试图build立一个约束看起来像这样的titleView: 我知道我会如何做到这一点的框架。 我会计算文本的宽度,图像的宽度,使用该宽度/高度创build一个包含两个视图的视图,然后将这两个视图添加为带有框架的正确位置的子视图。 我试图了解如何用约束来做到这一点。 我的想法是,内在的内容大小将帮助我在这里,但我疯狂地试图让这个工作。 UILabel *categoryNameLabel = [[UILabel alloc] init]; categoryNameLabel.text = categoryName; // a variable from elsewhere that has a category like "Popular" categoryNameLabel.translatesAutoresizingMaskIntoConstraints = NO; [categoryNameLabel sizeToFit]; // hoping to set it to the instrinsic size of the text? UIView *titleView = [[UIView alloc] init]; // no frame here right? [titleView addSubview:categoryNameLabel]; […]

如何以编程方式在UIScrollView中用AutoLayout设置子视图?

我用UiScrollview和UIPagectontrol使用Autolayout Progrmatically创build应用程序 我创build了TKScroller作为UIView的子类,我初始化它使用某些模式和数组。 TKScroller.m -(void)setData{ [self layoutIfNeeded]; CGRect mainFrame=self.frame; [self layoutIfNeeded]; CGRect mainFrame=self.frame; UIView *lastview; NSMutableArray* manualConstraints = [NSMutableArray array]; for (int i=0; i<arrayData.count ; i++) { CGRect frame; frame.origin.x = scrollView.frame.size.width * i; frame.origin.y = 0; frame.size = scrollView.frame.size; UIView *subview = [UIView new]; subview.backgroundColor = [self getRandomColor]; [scrollView addSubview:subview]; if (i==0) { NSLayoutConstraint* […]

我怎样才能使用自动布局(ios6 + ios7)4“和3.5”iphone屏幕的故事板?

关于构build可在4英寸和3.5英寸屏幕尺寸上工作的故事板布局,有许多问题和答案,但对于以下情形我找不到合适的解决scheme。 我使用ios6(和ios7)自动布局,我不必支持landscpae或ipad。 我有一个UIView有几个子视图,必须看起来像下面的模型。 在故事板中设置自动布局约束是很容易的,以适应任何一种屏幕尺寸。 我的问题是 – 如何使自动布局根据运行时的屏幕大小select正确的约束? 请注意,我不想使用2个不同的故事板。 在我的整个应用程序中这样做会是很多工作,我将不得不挂钩每个故事板上的所有代表,sockets和操作。 屏幕上的变化需要我做两倍的工作。 我已经尝试了2种方法使这个工作在一个故事板上,但是我对其中的任何一个都不满意。 加倍限制。 较大的约束(50)具有比较低的约束(30)更高的优先级。 这种方法的问题是,在3.5“的屏幕尺寸上,自动布局可能会select一个较低的优先级约束 – 足以满足布局 – 但留下一些高优先级的约束。 子类NSLayoutConstraint。 在这个方法中,故事板中的所有约束都被设置为NSDualLayoutConstraint。 在NSDualLayoutConstraint的初始化代码中,在运行时屏幕大小为3.5“的情况下,约束的常量更改为3_5_constant的值,但这种方法更具确定性,但在界面生成器预览中看不到3.5”布局。 如果只有界面生成器约束有一个次要的常量值,当屏幕大小为3.5“时,这将解决我的问题。所以我仍然与我的问题 – 我怎么才能正确地使用一个故事板布局子视图正确4“和3.5”屏幕尺寸?

iOS 7:“标签 – 标签”错位的视图框架在运行时会有所不同

我刚刚在iOS 6上完成了一个应用程序,并在一周前购买了一个开发人员帐户,所以没有太多时间玩iOS 7 SDK。 刚刚下载的黄金大师版本,并试图升级我的应用程序与iOS 7兼容。 我收到了很多警告 “标签 – 标签”错位的视图框架在运行时会有所不同。 我无法运行该程序。 该项目包含tableview,它是parsing和显示来自RSS的XML提要。 如何解决这个问题?

使用AutoLayout约束来隐藏UIView

不时,我有一个子视图,我想从布局中删除。 它不仅应该被隐藏起来,而且也不应该被视为视图“stream”的一部分,可以这么说。 一个例子: 我正在寻找一个策略,以编程方式隐藏橙色视图。 框的布局和内容是通过自动布局来实现的。 有两件事要注意: 橙色框根据内容定义其垂直高度,以及边缘的一些顶部/底部偏移量。 因此,将标签的文本设置为零只会将视图缩小到内部边距,因此不会有0的高度。 同样地,三个盒子之间的垂直间距意味着即使桔子盒的高度为0,红色和黄色之间的差距也是所需的两倍。 可能的解决scheme 我最好的build议是为橙色框添加一个约束,将其高度设置为0.为此,我需要为橙色框内的所有垂直约束使用不需要的优先级。 同时,容器应该更新用于分隔框的约束的常量。 我不太喜欢这种方法,因为橙色盒子类正在定义它的内在约束,因为它的超级观点的行为。 也许我可以忍受它,如果橙色框视图,而不是暴露一个'崩溃'的方法,自己添加0高度约束。 有更好的方法吗?