相关疑难解决方法(0)

使用自动布局时,如何调整CALayer的锚点?

注意:自问这个问题以来,事情已经发生了变化; 请看这里有一个很好的近期概述.


在自动布局之前,您可以通过存储框架,设置锚点和恢复框架来更改视图图层的锚点,而无需移动视图.

在自动布局世界中,我们不再设置框架,但是约束似乎不能将视图的位置调整回我们想要的位置.您可以破解约束以重新定位视图,但在轮换或其他调整大小事件时,这些会再次变为无效.

以下明智的想法不起作用,因为它创建了"无效的布局属性配对(左侧和宽度)":

layerView.layer.anchorPoint = CGPointMake(1.0, 0.5);
// Some other size-related constraints here which all work fine...
[self.view addConstraint:
    [NSLayoutConstraint constraintWithItem:layerView
                                 attribute:NSLayoutAttributeLeft
                                 relatedBy:NSLayoutRelationEqual 
                                    toItem:layerView 
                                 attribute:NSLayoutAttributeWidth 
                                multiplier:0.5 
                                  constant:20.0]];
Run Code Online (Sandbox Code Playgroud)

在这里我的目的是左边缘设置layerView,调整后的定位点来看,它的宽度加上20(我从上海华盈的左边缘要插入的距离)的一半.

是否可以在使用自动布局布局的视图中更改定位点而不更改视图的位置?我是否需要使用硬编码值并在每次旋转时编辑约束?我希望不是.

我需要更改锚点,以便在将变换应用于视图时,我获得正确的视觉效果.

calayer ios autolayout

159
推荐指数
3
解决办法
6万
查看次数

UIView/CALayer:转换在superview中触发layoutSubviews

当更改UIView的某些属性时,它会layoutSubviewssuperview中触发.我在文档中找不到任何关于此的陈述.

这些属性触发superview和self中的布局

  • 界限

这些属性仅在superview中触发布局

  • 转变
  • layer.transform

这些属性仅触发自我布局

  • 没有

这些属性不会触发任何布局

  • 中央
  • layer.anchorPoint
  • layer.position
  • α

我发现变换触发布局并且位置和anchorPoint没有变得非常混乱.

示例代码:https://github.com/hfossli/LayoutSubviewsInconsistency


我想知道:

  • 为什么我看到这种行为
  • 如果这确实是不一致的,或者我误解了一些核心概念
  • 每次我改变变换时如何避免superview to layoutSubviews

我在文档和头文件中找不到任何相关内容.使用UIDynamics或类似产品时问题很严重.

uiview ios layoutsubviews viewdidlayoutsubviews

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