ios - CALayer IOS 上的自动布局约束

标签 ios autolayout calayer

您好,我正在开发 iPhone 应用程序,我试图在其中为 edittext 设置一侧边框。我通过以下方式做到了这一点:

 int borderWidth = 1;
CALayer *leftBorder = [CALayer layer];

leftBorder.borderColor = [UIColor whiteColor].CGColor;
leftBorder.borderWidth = borderWidth;

leftBorder.frame = CGRectMake(0, textField.frame.size.height - borderWidth, textField
                              .frame.size.width, borderWidth);
[textField.layer addSublayer:leftBorder];

我在 IB 中对我的 edittext 设置了一些限制,这样当我旋转我的设备时,它会根据它调整文本字段的宽度。我的问题是调整 edittext 的宽度而不是调整我为编辑文本设置的 CALayer 的宽度。所以我想我也必须为我的 CALayer 项目设置一些限制。但我不知道该怎么做。任何人都知道这件事吗?需要帮忙。谢谢。

最佳答案

整个自动调整业务是特定于 View 的。图层不会自动调整大小。

你必须做的——在代码中——是自己调整层的大小

例如

在 viewController 中你会做

- (void) viewDidLayoutSubviews {
  [super viewDidLayoutSubviews]; //if you want superclass's behaviour... 
  // resize your layers based on the view's new frame
  self.editViewBorderLayer.frame = self.editView.bounds;
}

或者在您可以使用的自定义 UIView 中

- (void)layoutSubviews {
  [super layoutSubviews]; //if you want superclass's behaviour...  (and lay outing of children)
  // resize your layers based on the view's new frame
  layer.frame = self.bounds;
}

关于ios - CALayer IOS 上的自动布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303279/

相关文章:

ipad - iPad 上的核心动画截图

objective-c - CALayer 重绘旋转

ios - CALayer 蒙版无法正常工作

ios - 自动布局的 UIScrollView 内容大小问题

ios - 一个实体的 NSManagedObjectContextObjectsDidChangeNotification

ios - 通过 firebase 中的自动 id 值检索子项(TableView)

ios - 如何让我的backgroundImageView可拖动而不是主视图

ios - 将 NSLayoutConstraints 与 CALayer 支持的 View 结合使用无法正确设置动画

ios - 插入行后 UITableViewCell 动态高度中断

ios - UIScrollView 可以缩放,但不能平移