相关疑难解决方法(0)

iOS:自动布局中的多行UILabel

我在使用自动布局尝试实现一些非常基本的布局行为时遇到了麻烦.我的视图控制器在IB中看起来像这样:

在此输入图像描述

顶部标签是标题标签,我不知道它会有多少行.我需要标题标签来显示所有文本行.我还需要另外两个标签和小图像放在标题正下方,不管它有多高.我在标签和小图像之间设置了垂直间距约束,在标题标签和超视图之间设置了顶部间距约束,在小图像和超级视图之间设置了底部间距约束.白色UIView没有高度约束,因此它应该垂直拉伸以包含其子视图.我已将标题标签的行数设置为0.

如何调整标题标签以适应字符串所需的行数?我的理解是我不能使用setFrame方法,因为我正在使用自动布局.我必须使用自动布局,因为我需要那些其他视图保持在标题标签下面(因此约束).

我怎样才能做到这一点?

iphone cocoa-touch uilabel ios autolayout

178
推荐指数
5
解决办法
12万
查看次数

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

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

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

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

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

uitableview ios autolayout

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

是否可以将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万
查看次数

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

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

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

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

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

objective-c uitableview ios autolayout

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

-systemLayoutSizeFittingSize:在iOS 8下为tableHeaderView返回不正确的高度

关于正确调整带有自动布局的tableHeaderView(一个这样的线程)有很多线程,但它们倾向于预先设置iOS 8.

我有一个有很多表视图的情况,都有标题,在iOS 7下正确大小但在iOS 8下使用大多数上述线程支持的代码不正确.在表的控制器中,我有以下方法:

- (void)rejiggerTableHeaderView
{
    self.tableView.tableHeaderView = nil;

    UIView *header = self.headerView;

    [header setNeedsLayout];
    [header layoutIfNeeded];

    CGFloat height = [header systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

    CGRect headerFrame = header.frame;
    headerFrame.size.height = height;

    header.frame = headerFrame;

    self.tableView.tableHeaderView = header;
}
Run Code Online (Sandbox Code Playgroud)

使用iOS 7下的多行标签,这样可以正确调整表格视图的标题大小,如下所示:

但是在iOS 8下运行的相同代码会产生以下结果:

获取-systemLayoutSizeFittingSize的技巧是什么:在iOS 8下返回正确的大小?这是一个演示该问题的示例项目.

objective-c uitableview ios

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

动态设置tableHeaderView高度

我的应用程序创建了一个UITableViewController,它包含一个可能具有任意高度的自定义tableHeaderView.我一直在努力设置动态设置此标头,因为似乎建议的方法是缩短此标头.我的UITableViewController的相关代码:

import UIKit
import SafariServices

class RedditPostViewController: UITableViewController, NetworkCommunication, SubViewLaunchLinkManager {

    //MARK: UITableViewDataSource
    var post: PostData?
    var tree: CommentTree?
    weak var session: Session! = Session.sharedInstance

    override func viewDidLoad() {
        super.viewDidLoad()

        // Get post info from api
        guard let postData = post else { return }

        //Configure comment table
        self.tableView.registerClass(RedditPostCommentTableViewCell.self, forCellReuseIdentifier: "CommentCell")

       let tableHeader = PostView(withPost: postData, inViewController: self)
       let size = tableHeader.systemLayoutSizeFittingSize(UILayoutFittingExpandedSize)
       let height = size.height
       let width = size.width
       tableHeader.frame = CGRectMake(0, 0, width, height)
       self.tableView.tableHeaderView = tableHeader


       session.getRedditPost(postData) …
Run Code Online (Sandbox Code Playgroud)

ios autolayout swift

20
推荐指数
4
解决办法
3万
查看次数

在tableHeaderView中使用autolayout

我有一个UIView包含多行的子类UILabel.此视图使用autolayout.

在此输入图像描述

我想设置该视图为tableHeaderViewUITableView(不是一节头).此标题的高度取决于标签的文本,而标签的文本又取决于设备的宽度.那种场景自动布局应该很棒.

我发现并尝试 许多 解决方案来实现这一点,但无济于事.我试过的一些事情:

  • preferredMaxLayoutWidth在期间为每个标签设置一个layoutSubviews
  • 定义一个 intrinsicContentSize
  • 试图找出视图所需的大小并tableHeaderView手动设置框架.
  • 设置标头时向视图添加宽度约束
  • 一堆其他的东西

我遇到的一些各种失败:

  • 标签超出视图的宽度,不包裹
  • 帧的高度为0
  • 应用程序崩溃异常 Auto Layout still required after executing -layoutSubviews

解决方案(或解决方案,如有必要)应适用于iOS 7和iOS 8.请注意,所有这些都是以编程方式完成的.我已经设置了一个小型示例项目,以防您想要查看问题.我已将我的努力重置到以下起点:

SCAMessageView *header = [[SCAMessageView alloc] init];
header.titleLabel.text = @"Warning";
header.subtitleLabel.text = @"This is a message with enough text to span multiple lines. This text is set at runtime and might be short or long.";
self.tableView.tableHeaderView = header; …
Run Code Online (Sandbox Code Playgroud)

uitableview uiview ios autolayout nslayoutconstraint

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

UITableViewHeader上的自动布局

我已向Apple提交了有关此问题的错误报告!

我正在尝试在我的UITableViewHeader上使用新的iOS 6 Auto Layout,但是我抛出的所有东西都会在帖子结尾处返回错误.

我的代码:

TBMTableViewController.h

#import <UIKit/UIKit.h>

@interface TBMTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@end
Run Code Online (Sandbox Code Playgroud)

TBMTableViewController.m

#import "TBMTableViewController.h"
#import "UIView+Constraint.h"

@implementation TBMTableViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableViewController *tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
    [tableViewController.tableView setTranslatesAutoresizingMaskIntoConstraints:NO];

    UITableView *tableView = tableViewController.tableView;
    [tableView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [tableView setDelegate:self];
    [tableView setDataSource:self];

    [self.view addSubview:tableView];

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 200.0f)];
    [headerView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [tableView setTableHeaderView:headerView];

    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn1 setTranslatesAutoresizingMaskIntoConstraints:NO];
    [btn1 setTitle:@"Button 1" forState:UIControlStateNormal];
    [btn1 sizeToFit];
    [headerView addSubview:btn1];

    UIButton *btn2 = [UIButton …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview ios autolayout

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

UITableView标头在运行时的动态高度

我知道有很多关于它的帖子,但也许在最新的iOS上有一些更新...

我认为我们所有人都有一项创建任务,viewController其中包含大量内容,其中大部分内容都是自我调整的,而最底层则表明你需要展示一些tableView包含很多内容的内容......

可以做的第一个解决方案是使用UIScrollView,而根本不关心reusableCells.
所述第二是使用UITableViewheaderView并手动调整其高度(或通过调用systemLayoutSizeFittingSize:在需要时)各一次.
也许第三解决方案是使用UITableView和自我尺寸UIView分别与具有UIEdgeInsetstableView.并根据什么物体上具有较高的"zIndex的",它可以带来与处理的交互问题......
规定解决方案是使用电池上面全部内容,就像一个独立的单元.根本不确定这是个好主意......

问题:这个问题有新的解决方案吗?我没有深入研究它2年......也许在新的iOS中有类似reusableViews的东西UIScrollView...当然,目标是拥有可重复使用的单元格,并使用自动布局标题而无需手动更新其高度...

uitableview uiscrollview ios

5
推荐指数
5
解决办法
7418
查看次数

具有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
查看次数