【问题标题】:The view connected with IBOutlet property in UITableViewCell can not change frameUITableViewCell中IBOutlet属性连接的视图不能换帧
【发布时间】:2014-10-10 04:09:39
【问题描述】:

我有一个 A 类,UITableViewCell 的子类,并且刚刚将其 IBOutlet 属性 titleLabel 链接到情节提要中的 UILabel。但似乎我无法更改titleLabel 的框架。

- (void)awakeFromNib
{
    [super awakeFromNib];
    self.titleLabel.frame = CGRectMake(10.f, 20.f, 100.f, 25.f);
}

还执行- (void)layoutSubviews 中的代码,但不工作。

令人困惑的是,当在设备中运行的应用程序上点击 Cell 时,位置发生了变化,我使用代码创建了titleLabel,更改了框架,然后就可以了。

谁能帮帮我..

【问题讨论】:

  • 检查标题标签的限制条件。有什么限制吗?
  • @KenKuan 不,我没有为 Cell 的子视图添加任何常量。
  • 约束不是恒定的。并且视图会自动将自动调整大小的掩码转换为您的约束。使用调试器检查它的运行时。
  • 抱歉拼写错误,但是当点击单元格时,调用单元格的setSelected方法,然后再次layoutSubview,它运行良好。

标签: objective-c uitableview storyboard layoutsubviews


【解决方案1】:

解决了这个问题如下:

首先为视图添加约束,然后将约束属性(Leading、Trailing、Top、Bottom ...)与源文件连接,创建@IBOutlet 属性变量。

第二次修改- (void)updateConstraints中的constrains值

- (void)updateConstraints
{
    [super updateConstraints];
    self.titleLabelHeight.constant = 100.f;
    self.titleLabelLeading.constant = 20.f;
    //...
}

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多