Tag: nslayoutconstraint

是否有可能将UIView的顶部固定到导航栏的底部?

我试图定位我的UIView是在导航栏下20pt,但是当我把它设置为相对于视图控制器上的视图,它仍然在20pt的导航栏下,我不想硬编码。 是否有可能将其放置在导航栏之外?

我如何做到这一点,如果我淡出我的导航栏,然后实际上隐藏它的程序,如果我撤消这没有时间问题?

长话短说,我有一个视图控制器,用户可以点击self.view (除了导航栏之外的任何地方),它将进入全屏模式,底部的控件淡出,导航和状态栏淡出。 类似于iBooks。 我可以简单地淡化导航栏的alpha,但是为了让用户能够在新获得的区域(导航栏现在已经淡出)中点击,并且让它做一些事情,我不得不做更多的事情,阿尔法,因为导航栏仍然在技术上占据领域。 所以我用[self.navigationController setNavigationBarHidden:YES animated:NO];隐藏导航栏[self.navigationController setNavigationBarHidden:YES animated:NO]; 。 在animation块结束后我必须这样做,否则它将在animation块中并作为块的一部分进行animation处理。 所以我使用dispatch_after在animation完成后(0.35秒延迟)完成。 然而,这导致如果用户在0.35秒的时间段内在任何时间点击animation并且等待完成的事件,那么引起另一个块开始时的瑕疵行为,即使对于另一个块仍然等待0.35秒完成。 它会导致一些不好的行为,并导致导航栏保持隐藏状态。 毛。 它发生的video: http : //cl.ly/2i3H0k0Q1T0V 这是我的代码来演示我在做什么: – (void)hideControls:(BOOL)hidden { self.navigationController.view.backgroundColor = self.view.backgroundColor; int statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height; [UIView animateWithDuration:0.35 animations:^{ [[UIApplication sharedApplication] setStatusBarHidden:hidden withAnimation:UIStatusBarAnimationFade]; if (hidden) { self.navigationController.navigationBar.alpha = 0.0; self.instructionsLabel.alpha = 0.0; self.backFiftyWordsButton.alpha = 0.0; self.forwardFiftyWordsButton.alpha = 0.0; self.WPMLabel.alpha = […]

使用自动布局在UIScrollView中使用浮动视图滚动犹豫

题: 我会简化问题,但保留我的原始参考… 我正在修改现有约束的优先级,但结果只会改变其中一个UIScrollView子视图的位置。 所有剩下的子视图保持原来的大小和位置,但是看起来像是我在修改约束条件下的所有子视图上发生布局传递。 那么,为什么ViewWillLayoutSubviews和UpdateViewConstraints被调用的东西没有改变? [原始问题]请看下面的细节。 在包含的屏幕录像中看到的滚动犹豫的原因是什么?我该如何解决? 背景: 我已经构build了一个手风琴风格的列表控件,它承载了几个子UIViewControllers的视图,每个UIViewControllers都与一个标题视图配对,以使用户能够切换其内容视图的可见性。 我已经使用自动布局的UIScrollView创build了这个列表控件。 我已经非常熟悉用UIScrollView进行自动布局的复杂性,但是承认我对于自动布局来说是相当新颖的。 我严重依赖苹果的文档和社区的相关博客文章: 苹果的文档 相关的StackOverflow问题 在许多其他许多人之中。 我已经实现了这个控件,使得标题视图可以浮动在其他UIScrollView内容之上。 非常像分组的UITableView的部分视图,当用户向下滚动以查看更多内容时,他们将坚持到UIScrollView的顶部。 顺便说一下,我最初使用UITableView来构build它,但是它pipe理可见单元格的方式导致了它自己的滚动性能问题。 问题: 滚动内容时遇到一些性能问题。 我已经做了一些故障排除,我发现,当“浮动标题”function被禁用时,滚动性能是相当不错的(虽然仍然有一些犹豫,扩大/折叠可能与我的滚动相同的原因部分性能问题)。 但是,当启用此function时,每个标题视图浮动时,滚动犹豫不决。 我已经在我的iPod Touch 5上添加了我的原型屏幕录像。 在iPod Touch 5上运行原型的Screencast 这是一个非常小的犹豫,但这个原型具有明显不太复杂的内容视图。 最后的项目显示了犹豫不决,大约一秒钟。 细节: 原型是使用Xamarin构build的,但是我精通Objective-C,如果这就是你想要回答的问题。 以下是我如何设置我的约束来支持此function。 我已经在修改UIScrollView子视图的Reload()方法中做了这个。 UIView previousContent = null; for (var sectionIdx = 0; sectionIdx < this.Source.NumberOfSections (this); sectionIdx++) { var vwHeader = this.Source.GetViewForHeader (this, sectionIdx); […]

了解使用Xcode和手动编码的约束

我只是读了一些关于如何以编程方式操作约束数字的信息,但我想我需要用Xcode直观地看到它。 所以我决定把这样一个UIView,看看发生什么事与约束: 自动会创build4个约束: 在修改数字之后,我明白了这一切的意义。 我们有2个垂直空间和2个水平空间。 但让我们先关注垂直 从屏幕顶端测量的垂直空间之一(我猜),我给这个数字30.和从底部测量的其他垂直空间,我给-50。 现在,当它变成代码时,我真的不知道如何给这2个数字。 据我所知,这里是如何设置代码约束: NSLayoutConstraint *myConstraint =[NSLayoutConstraint constraintWithItem:_screenView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:_container attribute:NSLayoutAttributeHeight multiplier:20 constant:200]; [_screenView addConstraint: myConstraint]; 让我们假设_screenView是一个_screenView视图, _container是放在它上面的UIView。 我有3个问题: 如何用代码手动设置垂直空间(30和-50)? 因为从故事板我没有看到任何不同的垂直空间的名称或ID。 他们都有相同的名字。 我必须创build2 NSLayoutConstraint ? 那么如何把它添加到_screenView? 我必须创build这个: [_screenView addConstraint: myConstraint]; 两次? multiplier用于什么? 因为我在storyboard中看不到这个选项。 非常感谢你。

等宽/高button网格上的iOS约束会导致位置和大小发生变化

我正在更新我的计算器应用程序以使用新的dynamic大小的button,并有约束的问题。 包含应该正常工作,但我可以告诉,但Xcode抱怨错放的意见。 它给错误的意见的价值是不正确的,如果我试图解决它们,那么它只会导致更多的意见“错位”。 在下面的截图中,第一个多色行(橙色,绿色,粉红色,黄色,红色)是一排UILabels。 它们应该都具有相同的宽度,它们和屏幕边缘之间的间距为0。 它们在一个容器视图中(Xcode标签是“注册标签视图”,如下面的截图所示)。注册标签视图容器有一个固定的高度约束。 然后在下面,是另一个容器视图(“键盘视图”),里面是一个5×8的视图网格(我的计算器上的button)。 button应该都具有相同的宽度,并且都具有相同的高度。 在我的故事板中,它们是64×58,完全符合我的320×464键盘视图。 (320/5 = 64和464/8 = 58)。 以下是故事板警告的屏幕截图。 注意最后两个项目是dynamicbutton(在键盘视图中),它表示其中一个预期为63宽,另一个预计为65宽。 这是不正确的。 他们都应该是64宽,他们都有一个等宽度约束。 其中一个标签似乎也有同样的问题,Xcode希望其中一个是63宽,但他们应该都是64宽。 你可以在故事板中看到所有的button都很好地排列在一起(基于它们的框架),但是当我在模拟器中运行它时,可以看到它们在每一行上以不同的方向相互重叠一个像素: 我设置约束的方式是:我使用框架(x,y,w,h)将它们全部安排在故事板中,然后我将它们全部选中,并添加如下约束条件: 但是,它立即抱怨说有几个项目放错了位置。 我究竟做错了什么? 我怎样才能使这项工作正常?

使用约束来保持两个表视图相同的高度和相同的距离

上下文/我想要做什么 我正在为iOS 7构build这个 我正在使用StoryBoard 我有两个UITableViews ,我想保持相同的高度和距离,以保持3.5和4英寸设备之间的视觉一致性 所以从4英寸的屏幕转换到3.5英寸的屏幕,我想: 桌子视图变短,但保持高度相等 顶层表视图保持相同的y pos 对于底部表格视图来移动它的位置,以保持顶部桌子视图的底部和底部桌子视图的顶部之间的相同距离。 和他们之间的差距一样 我所试过的 在故事板中使用Pin图标我已经select了两个TableView,并将它们的高度设置为相等,并将此代码包含在视图控制器中: [self.topTableView addConstraint:[NSLayoutConstraint constraintWithItem:self.bottomTableView attribute:NSLayoutAttributeBottom relatedBy:0 toItem:self.bottomTableView attribute:NSLayoutAttributeTop multiplier:1 constant:30]]; 题 如何保持相同的高度,同时保持相同的距离 更新

为什么WKWebView不显示video? – 斯威夫特3

我成功地以编程方式在viewController (在viewDidLoad() )中添加了一个viewController 。 当加载包含video的url时,显示效果不错,但是当我尝试点击它(播放它)时,我看不到它,但audio正常工作。 奇怪的是我创build了一个新的项目,以确保它应该正常工作,它做了,我复制相同的确切代码的webView显示video,因为它应该。 在转换到Swift 3之前它工作正常。 这是在video上点击时的样子: 点击之前: 攻丝后: 我也试过另一个网页: 点击之前: 点击后(请注意状态栏现在隐藏): 简单来说,这是代码: override func viewDidLoad() { super.viewDidLoad() let web = WKWebView(frame: view.frame) let urlRequest = URLRequest(url: URL(string: "http://www.w3schools.com/html/html5_video.asp")!) web.frame = view.frame web.load(urlRequest) view.addSubview(web) } 我试图检查很多情况下没有任何输出。 我错过了什么? 提前致谢。

animation约束更改,定位animation,但高度跳跃没有animation

我有一个自定义的UIView。 在UIView中,我有一个带有@ 8的黄色背景的名为labelWhite 。 我以编程方式为该UILabel创build4个约束:顶部,左侧,宽度和高度。 当我点击UIView时,我改变了高度的常数值,并在5秒内animation布局。 然而,视图的高度立即跳转到新的值,但y位置也会改变,并立即跳转到一个新的值。 然后在5秒钟的animation中,y位置回到了原本应该保持的位置。 你可以在这里看到它的video: http : //inadaydevelopment.com/stackoverflow/Constraints0.mov 它应该做的只是保持在y = 0并垂直缩小。 我究竟做错了什么? 编辑: 我刚刚发现,如果我的子视图是UIViews,我的animation完全按照预期工作,但是作为UILabels,我可以获得跳跃大小和animation位置。 到底是怎么回事? 有没有办法让我的UILabelsanimation的大小? 这是我用来修改和animation布局的代码: self.constraintWhiteHeight.constant = secondaryHeight; [UIView animateWithDuration:5.0 animations:^{ [self layoutIfNeeded]; }]; 这是我用来创build约束的代码: // —— Top —– NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.labelWhite attribute:NSLayoutAttributeTop multiplier:1.0 constant:0]; [self addConstraint:constraint]; // —— Left —– self.constraintWhiteLeft = [NSLayoutConstraint […]

Autolayout混淆:与WebView和页眉/页脚视图的ScrollView的约束

为了说明我的问题,我创build了以下graphics: 红色方块周围的黑色边框应该是iPhone屏幕。 在里面,我们用红色的UIScrollView ,比屏幕更高。 事实上,它与UIWebView一样高,以黄色显示。 UIWebView是UIScrollView的子视图,禁用滚动function。 此外,我们有两个蓝色的视图,我喜欢称之为页眉和页脚视图。 它们也是UIScrollView子视图,但在可滚动边界之外。 我现在的问题是 :如何configuration自动布局约束呢? 我已经设法使用这个答案的代码检索UIWebView高度,然后相应地更新UIScrollView的contentSize 。 然而,这不是一个好的解决scheme,因为UIWebView的宽度不会对UIScrollView宽度变化做出反应。 我也成功设置了标题视图的布局约束(使用Masonary ): [headerView makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(@-100); make.left.equalTo(@0); make.width.equalTo(scrollView.width); make.height.equalTo(@100); }]; 但是,像这样设置页脚视图的布局不起作用: [changeView makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(scrollView.bottom) make.left.equalTo(@0); make.width.equalTo(scrollView.width); make.height.equalTo(@100); }]; 我觉得这不是太困难,并希望得到一些更熟悉自动布局的人的帮助。 谢谢!

如何修复似乎不影响自定义UITableViewCell布局的奇怪的NSLayoutConstraint错误

每当我的自定义UITableViewCells之一是由tableView:cellForRowAtIndexPath绘制:控制台吐出了一堆NSLayoutConstraint不一致。 我理解这些大部分: Unable to simultaneously satisfy constraints. …boring stuff.. "<NSLayoutConstraint:0x8b0eb60 V:|-(NSSpace(20))-[UILabel:0x8b0cb30] (Names: '|':UITableViewCellContentView:0x8bd7d40 )>", "<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>", "<NSLayoutConstraint:0x8b0dba0 V:[UITextView:0x91dba00]-(NSSpace(20))-| (Names: '|':UITableViewCellContentView:0x8bd7d40 )>", "<NSLayoutConstraint:0x8b0d5a0 V:[UITextView:0x91dba00(1000)]>", "<NSAutoresizingMaskLayoutConstraint:0x8b00330 h=–& v=–& V:[UITableViewCellContentView:0x8bd7d40(44)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]> 或者至less我觉得我是这样做的。 真正使我困惑的是,我的UITableViewCell正在工作,没有任何约束似乎被打破。 我认为错误中列出的一些限制,特别是最后一个,是系统添加的限制。 这是可能的,如果我不使用.xibs,只有在代码中添加约束? 在错误的最后一行特别是因为我dynamic生成每个代码的高度,但我注意到在那里44,默认的单元格高度。 是否有一些这些限制默认添加,例如说,当我打电话[super updateConstraints] ? 我怎么去解决这些错误或找出他们来自哪里? 在一个侧面说明,我明白,浸入到核心文本执行比我的UITextView +自动布局解决scheme好得多。 现在我正在caching细胞高度。 但是,这些布局错误是否会在滚动时造成延迟,或者仅仅是因为我使用“自动布局”来计算屏幕上的每个单元格高度? 我已经发布了这些错误发生在Github上的项目,如果有人想下载和体验自己的古怪。