如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?

Posted

技术标签:

【中文标题】如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?【英文标题】:How to add custom UIView(xib) in custom UITableviewCell with the help of AutoLayout? 【发布时间】:2015-06-03 05:53:07 【问题描述】:

我有一个视图控制器,其中有一个UITableView

我在那个UITableView中使用了自定义UITableviewCell和xib。

现在我有一个带有 xib 的 UIView,我想借助 AutoLayout 将 UIView's 对象添加到自定义 UITableViewCell 中。

我在自定义UITableViewCell 中成功添加了UIView,但是UIView 太大了 并且它不适合我的自定义 UITableViewCell .

我知道 UIView 可以在 AutoLayout 的帮助下正确适应自定义 UITableViewCell,但我不知道如何,因为我是 AutoLayout 的新手。

在我的自定义UITableViewCell

CustomAlertCell.m//this is my custom UITableViewCell class

-(void)addCustomView_ForRow:(int)theRow

    JobAlertCell_View *vwJob = [[JobAlertCell_View alloc] initFromNibFile:@"JobAlertCell_View"];
   vwJob.frame = CGRectMake(0, 118, vwJob.frame.size.width, vwJob.frame.size.height);
   [self addSubview:vwJob];

这是我的vwJob.frame.size.height = 90,但在设备中它比我想要的大得多。

谢谢。

【问题讨论】:

是您的UIView 变量的尺寸吗? 不,我的自定义 UIVIew 的高度和宽度是固定的。 【参考方案1】:

您可以使用以下代码添加宽度和高度约束

    -(void)addCustomView_ForRow:(int)theRow
    
       JobAlertCell_View *vwJob = [[JobAlertCell_View alloc] initFromNibFile:@"JobAlertCell_View"];
       [self addSubview:vwJob];

        [self addConstraint:[NSLayoutConstraint constraintWithItem:vwJob
                                                       attribute:NSLayoutAttributeHeight
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:nil
                                                       attribute:NSLayoutAttributeNotAnAttribute
                                                      multiplier:1.0
                                                        constant:100.0]];
        [self addConstraint:[NSLayoutConstraint constraintWithItem:vwJob
                                                       attribute:NSLayoutAttributeWidth
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:nil
                                                       attribute:NSLayoutAttributeNotAnAttribute
                                                      multiplier:1.0
                                                        constant:100.0]];
        [self layoutIfNeeded];

    

来源:

https://codehappily.wordpress.com/2013/09/21/constant-height-width-constraint-autolayout/ https://codehappily.wordpress.com/2013/10/09/ios-how-to-programmatically-add-auto-layout-constraints-for-a-view-that-will-fit-its-superview/

希望对您有所帮助...!

【讨论】:

我试过你的代码,但仍然是同样的问题。我低于警告。无法同时满足约束。可能至少以下列表中的一个约束是您不想要的。"<0x7fb260c9faf0 h:><0x7fb260d50040 h="-&-" v="-&" jobalertcell_view:0x7fb260ca00b0. jobalert_cell:0x7fb260c973c0.width><0x7fb260d510d0 h:>

以上是关于如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?的主要内容,如果未能解决你的问题,请参考以下文章

在自定义容器视图中旋转时 AutoLayout 不会调整视图大小?

如何通过 AutoLayouts 在自定义单元格中正确显示 2 个 UITextFields?

使用 AutoLayout 将 UIView 隐藏在单元格内时,不适合 UITableViewCell 高度

android:如何用canvas在自定义view里画图

如何在后端动态定义 Autolayout

如何在自定义对话框上显示进度对话框?