标签: autolayout

嵌套的UIStack查看破坏的约束

我有一个复杂的视图层次结构,内置在Interface Builder中,具有嵌套的UIStackViews.每次隐藏一些内部堆栈视图时,我都会收到"不满意的约束"通知.我跟踪到了这个:

(
    "<NSLayoutConstraint:0x1396632d0 'UISV-canvas-connection' UIStackView:0x1392c5020.top == UILabel:0x13960cd30'Also available on iBooks'.top>",
    "<NSLayoutConstraint:0x139663470 'UISV-canvas-connection' V:[UIButton:0x139554f80]-(0)-|   (Names: '|':UIStackView:0x1392c5020 )>",
    "<NSLayoutConstraint:0x139552350 'UISV-hiding' V:[UIStackView:0x1392c5020(0)]>",
    "<NSLayoutConstraint:0x139663890 'UISV-spacing' V:[UILabel:0x13960cd30'Also available on iBooks']-(8)-[UIButton:0x139554f80]>"
)
Run Code Online (Sandbox Code Playgroud)

具体来说,UISV-spacing约束:当隐藏UIStackView时,它的高约束得到一个0常量,但这似乎与内部stackview的间距约束发生冲突:它需要我的Label和Button之间有8个点,这与隐藏约束是不可调和的,因此约束崩溃.

有没有解决的办法?我已经尝试递归隐藏隐藏堆栈视图的所有内部StackViews,但这导致奇怪的动画,其中内容浮出屏幕,并导致严重的FPS下降启动,同时仍然没有解决问题.

cocoa-touch interface-builder ios autolayout uistackview

27
推荐指数
4
解决办法
1万
查看次数

在自定义UIView中添加自动布局约束代码的位置

我经常看到自动布局约束被添加UIViewController到我看来,这似乎是布局逻辑的错误位置.

可以NSLayoutConstraint在自定义中添加s UIView吗?

在哪里UIView可以通过编程方式添加它们?

uikit uiview ios autolayout swift

27
推荐指数
2
解决办法
1万
查看次数

什么是自动布局?

什么是自动布局 - 它做了什么,是iOS 5的功能吗?

由于新的iPhone 5有一个更大的屏幕,所以如何优化你的应用程序的选项归结为自动布局.

你能指点我一些关于自动布局的文章,以及我如何使它适应我的项目?

iphone xcode cocoa-touch ios autolayout

26
推荐指数
1
解决办法
2万
查看次数

iOS - 以编程方式使用自动布局将UIView置于超视图的中心

如何使用自动布局以编程方式将UIView设置为其超级视图的中心?

UIButton* viewObj = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[viewObj setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewObj setBackgroundColor:[UIColor greenColor]];
[self.view addSubview:viewObj];

NSLayoutConstraint* cn = [NSLayoutConstraint constraintWithItem:viewObj
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterX 
                                                     multiplier:1.0
                                                       constant:0];
[self.view addConstraint:cn];
cn = [NSLayoutConstraint constraintWithItem:viewObj 
                                  attribute:NSLayoutAttributeCenterY
                                  relatedBy:NSLayoutRelationEqual 
                                     toItem:self.view
                                  attribute:NSLayoutAttributeCenterY
                                 multiplier:1.0
                                   constant:0];
[self.view addConstraint:cn];
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于UIButton,但是我在使用适用于UIView的东西替换第一行时遇到了麻烦.

我试过了

UIView* viewObj = [UIView alloc] initWithFrame:CGRectZero];
Run Code Online (Sandbox Code Playgroud)

但视图不会出现在模拟器中.

有什么建议?

谢谢!

iphone ios autolayout

26
推荐指数
2
解决办法
3万
查看次数

自动布局错误

我对这张海报有类似的问题.我使用了jrturton的建议来移动用于自定义按钮的代码viewDidLayoutSubviews.它一直运行良好,直到我收到此错误:

'NSInternalInconsistencyException',原因:'将-viewDidLayoutSubviews发送到视图控制器后仍需要自动布局.ViewController的实现需要将-layoutSubviews发送到视图以调用自动布局.

我对图形非常无能为力,我唯一能想到的就是放弃,[self.view layoutSubviews];但是没有修复任何东西.它在我的故事板中取消选中"自动布局"时有效,但这改变了我的按钮的尺寸,我想知道是否还有其他方法可以修复它?

码:

-(void)viewDidLayoutSubviews {
    NSArray *arrayOfButtons = [NSArray arrayWithObjects:self.decimalButton, self.buttonOne, self.buttonTwo, self.buttonThree, nil];

    for (UIButton *button in arrayOfButtons) {

        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];

        button.layer.borderWidth = 0.25f;
        button.layer.borderColor = [[UIColor grayColor] CGColor];

        CAGradientLayer *btnGradient = [CAGradientLayer layer];
        btnGradient.frame = button.bounds;
        btnGradient.colors = [NSArray arrayWithObjects:
                              (id)[[UIColor colorWithRed:122.0f / 255.0f green:188.0f / 255.0f blue:255.0f / 255.0f alpha:1.0f] CGColor],
                              (id)[[UIColor colorWithRed:96.0f / 255.0f green:171.0f / 255.0f blue:248.0f / 255.0f alpha:1.0f] CGColor], …
Run Code Online (Sandbox Code Playgroud)

objective-c uibutton ios autolayout

26
推荐指数
1
解决办法
6947
查看次数

在纵向和横向中使用AutoLayout

自动布局,尽管它是好的,让我疯狂的约束.我有在IB设计的肖像模式,但我无法获得所需的横向方向.

布局

请注意,当方向更改为横向时,UIImageView块之间的间距会减小,并且SAMPLE TEXT更改的文本对齐方式会右对齐.

目前,我已经为它添加了一些限制.但是,我需要保持UIImageView块之间的空间固定,因此它看起来像肖像和景观中的精细.我需要将它均匀地分布在肖像中并在景观中压缩(如上图所示).同样,目前我的约束会调出文本,但它不会将其保持在屏幕的中心并且右对齐.

自动布局可以实现这一点吗?如果是这样,怎么样?非常感谢.

xcode objective-c ios autolayout

26
推荐指数
2
解决办法
2万
查看次数

iOS如何根据UILabel在其中制作UIView的动态宽度/自动布局

我正在努力解决一些菜鸟问题.我有一个UIView显示一些价格.我想要UIView根据价格的动态宽度,如果是1欧元,那么它将是例如20pt,如果它是2300欧元,那么它将像50pt宽度一样.

我试图使用故事板的约束但没有运气.是否可以在故​​事板中进行,或者我是否必须计算宽度UILabel然后以UIView编程方式设置宽度?

先感谢您.

ios autolayout

26
推荐指数
2
解决办法
4万
查看次数

调用layoutIfNeeded()时,AutoLayout会中断约束

我正在尝试使用Swift UITaleViewCellUITableViewXCode6中实现动态高度.

我通过图形化设置约束来布置我的单元格(屏幕截图来自XCode5,因为XCode6上有NDA).我还将BodyLabel的换行符属性设置为"自动换行",并将行号设置为"0"以允许多行.

在此输入图像描述

现在,如果我只是在tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?)方法内部设置单元格的内容,那么我就可以正确获得动态高度行为.

但是,由于我按照在线提供的教程(特别是这个),我添加了另一种方法来确定细胞的高度tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!).在我关注的教程中,它告诉我添加cell.layoutIfNeeded(),所以我也添加了.

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {

    var cell = tableView!.dequeueReusableCellWithIdentifier(kCellIdentifier) as GroupFeedCell

    // Configure the cell
    if let frc = self.fetchedResultsController {
        let feed = frc.objectAtIndexPath(indexPath) as GroupFeed
        cell.titleLabel.text = feed.name
        if let message = feed.message {
            cell.bodyLabel.text = message
        }
    }

    // Layout the cell
    cell.layoutIfNeeded()

    // Get the height
    var …
Run Code Online (Sandbox Code Playgroud)

uitableview autolayout swift xcode6

26
推荐指数
2
解决办法
5761
查看次数

UIImageView/UIView的Autolayout纵横比

如何为UIImageView/UIView设置autolayout,以便iphone 6和6 plus的图像视图宽度和高度增加一点.我已经尝试添加约束宽高比,但增加的高度和宽度非常大.无论如何设置约束高度和图像视图的宽度可以手动设置为iPhone 6和6加.看一下屏幕截图,iphone 6和6 plus中的图像视图应该比它现在显示的要小一些. 在此输入图像描述

xib uiview uiimageview ios autolayout

26
推荐指数
2
解决办法
4万
查看次数

在iOS上,边距,边缘插入,内容插入,对齐方式,布局边距,锚点​​之间有什么区别......?

似乎有几个不同的选项/术语,iOS社区中的人在布局方面使用(例如,UIEdgeInsets是一种类型,但有时我会听到/读取"设置插图"或布局边距与布局指南).

我总能找到一个有效的选项.但我不确定我是否正在使用合适的工具.

有人可以帮助在布局的这些不同方面之间提供一些清晰度,以及何时以最佳方式使用每个方面?

layout view ios autolayout nslayoutanchor

26
推荐指数
3
解决办法
4276
查看次数