相关疑难解决方法(0)

如何调整superview的大小以适应autolayout的所有子视图?

我对自动布局的理解是,它采用超视图的大小,并以约束和内在大小为基础计算子视图的位置.

有没有办法扭转这个过程?我想在约束和内在大小的基础上调整superview的大小.实现这一目标的最简单方法是什么?

我有在Xcode中设计的视图,我用它作为标题UITableView.该视图包括标签和按钮.标签的大小因数据而异.根据约束条件,标签成功按下按钮,或者如果按钮和superview底部之间存在约束,则标签将被压缩.

我找到了一些类似的问题,但他们没有很好的答案.

uitableview ios autolayout

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

使用UITableViewCell子类执行-layoutSubviews后仍需要"自动布局"

使用XCode 4.5和iOS 6,我正在开发一个带有自定义单元格的简单表视图的应用程序.我已经在iOS 5及以下版本中完成了这一百次,但由于某种原因,新的autoLayout系统给了我很多麻烦.

我在IB中设置了我的表格视图和原型单元格,添加了子视图并将它们连接起来作为IBOutlets然后设置我的委托和dataSource.但是现在每当从第一个单元格中取出时cellForRowAtIndexPath,我都会收到以下错误:

***断言失败 - [ShopCell layoutSublayersOfLayer:],/ SourceCache/UIKit_Sim/UIKit-2372/UIView.m:5776

***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'执行-layoutSubviews后仍需要自动布局.ShopCell的-layoutSubviews实现需要调用super.

我没有在我的子类化单元格(ShopCell)中实现-layoutSubviews方法,即使我尝试这样做并添加超级调用,因为它表明我仍然得到相同的错误.如果我从IB中的单元格中删除子视图,并将其更改为标准的UITableViewCell,一切都按预期工作,但当然我的单元格中没有数据.

我几乎可以肯定,我有一些简单的东西,但我找不到任何文件或指南来暗示我做错了什么.任何帮助,将不胜感激.

编辑:只是尝试将其更改为IB中的UITableViewCell并保留所有子视图,仍然是相同的错误.

objective-c ios autolayout xcode4.5

115
推荐指数
10
解决办法
5万
查看次数

是否可以将AutoLayout与UITableView的tableHeaderView一起使用?

因为我发现AutoLayout我到处都使用它,现在我正在尝试使用它tableHeaderView.

我做了subclass一些UIView添加的东西(标签等......)我想要他们的约束,然后我把它添加CustomViewUITableView' tableHeaderView.

一切都工作得很好,除了UITableView总是显示上面CustomView,通过以上我指的CustomViewUITableView,因此它不能被看到!

看来,无论我做什么,对heightUITableView" tableHeaderView始终 0(所以是宽度,x和y).

我的问题:如果不手动设置框架,是否可以完成此操作

编辑:我正在使用 的CustomView' subview有这些限制:

_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview ipad ios autolayout

91
推荐指数
8
解决办法
6万
查看次数

如何使用autolayout设置tableHeaderView(UITableView)的高度?

在过去的3到4个小时里,我一直把头撞在墙上,我似乎无法弄明白.我有一个UIViewController,里面有一个全屏UITableView(屏幕上有一些其他的东西,这就是为什么我不能使用UITableViewController)我想让我的tableHeaderView用autolayout调整大小.不用说,它不合作.

见下面的截图.

在此输入图像描述

因为overviewLabel(例如"此处列出概述信息."文本)具有动态内容,所以我使用autolayout来调整它的大小和它的超级视图.除了tableHeaderView之外,我已经很好地调整了所有内容,它位于层次结构中的Paralax Table View之下.

我发现调整标题视图大小的唯一方法是以编程方式,使用以下代码:

CGRect headerFrame = self.headerView.frame;
headerFrame.size.height = headerFrameHeight;
self.headerView.frame = headerFrame;
[self.listTableView setTableHeaderView:self.headerView];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,headerFrameHeight是tableViewHeader高度的手动计算,如下所示(innerHeaderView是白色区域,或者第二个"View",headerView是tableHeaderView):

CGFloat startingY = self.innerHeaderView.frame.origin.y + self.overviewLabel.frame.origin.y;
CGRect overviewSize = [self.overviewLabel.text
                       boundingRectWithSize:CGSizeMake(290.f, CGFLOAT_MAX)
                       options:NSStringDrawingUsesLineFragmentOrigin
                       attributes:@{NSFontAttributeName: self.overviewLabel.font}
                       context:nil];
CGFloat overviewHeight = overviewSize.size.height;
CGFloat overviewPadding = ([self.overviewLabel.text length] > 0) ? 10 : 0; // If there's no overviewText, eliminate the padding in the overall height.
CGFloat headerFrameHeight = ceilf(startingY + overviewHeight + overviewPadding + 21.f + 10.f);
Run Code Online (Sandbox Code Playgroud)

手动计算有效,但如果将来发生变化,它会很笨拙并容易出错.我想要做的是让tableHeaderView根据提供的约束自动调整大小,就像你可以在其他地方一样.但对于我的生活,我无法弄明白.

关于这个问题有几个关于此的帖子,但没有一个是明确的,最后让我更加困惑.这里有几个:

uitableview ios autolayout ios7

83
推荐指数
4
解决办法
6万
查看次数

使用自动布局,IB和字体大小时,表头视图高度是错误的

我正在尝试为我的uiTableView创建一个标题视图(不是节标题,我已经有了.)我在界面构建器中设置了一个XIB.所有的连接都连接起来,它运行得很漂亮......除了桌子没有足够的空间!我的问题是表的顶部稍微重叠了表的标题.

我的XIB设置为所有按钮的自动布局,IB很高兴约束不会发生冲突/模糊.视图设置为自由形式大小,在我的情况下最终为320 x 471.然后在视图的约束中,我为视图设置了内在大小.

现在这与我的桌子完美搭配.一切看起来都很棒.但是如果我用代码手动更改标题视图中的任何字体,布局会使视图变大,最终会在我的表格下面.

任何想法如何让tableviewcontroller在设置字体和大小后留下足够的空间用于标题视图?我希望我有理由解释这一点.

objective-c uitableview ios autolayout

34
推荐指数
5
解决办法
3万
查看次数

如何将高度设置为从xib加载的tableFooterView

我有一个UITableView,我正在添加tableFooterView从xib加载.

var footer = NSBundle.mainBundle().loadNibNamed("AFooterView", owner: self, options: nil).first as! AFooterView
self.tableView.tableFooterView = footer
Run Code Online (Sandbox Code Playgroud)

这很好,但我需要能够设置这个页脚的高度.xib只有一个UIImageView垂直和水平居中,因此无论视图的高度如何,它都会适应.

我不知道如何做到这一点AutoLayout?什么是正确的道路?

cocoa-touch uitableview ios autolayout

8
推荐指数
1
解决办法
9726
查看次数

具有Autolayout的tableHeaderView无法正常工作

大家好我有一个TableHeaderView,一切都由Autolayout管理:

  • UIImageView在顶部应始终为2:1,所以我设置纵横比和所需约束的其余部分.

  • 4 UIButtons应该始终是水平的,并且应该具有相同的高度和宽度.所以我使用Equal Width和Equal Height,并且纵横比为1:1

  • 和我有两个UILabelsnumberOfLines设置为0.我也把我的子类UILabel,因为preferredMaxLayoutWidth,这样的:

    - (void) layoutSubviews
    {
    [super layoutSubviews];
    
    if ( self.numberOfLines == 0 )
    {
    if ( self.preferredMaxLayoutWidth != self.frame.size.width )
    {
        self.preferredMaxLayoutWidth = self.frame.size.width;
        [self setNeedsUpdateConstraints];
     }
     }
    }
    
    Run Code Online (Sandbox Code Playgroud)

这是我的代码:

- (void)initializeHeaderViewLabels
{
 //After the Response from my server arrived i set the tableHeaderView with the Textdata
self.tableView.tableHeaderView = nil;

if((self.contentDict[@"title"]) != [NSNull null])
{
    self.headerTitleLabel.text = (self.contentDict[@"title"]);
}

if((self.contentDict[@"shortDescription"]) != [NSNull null]) …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios nstableheaderview

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