我正在创建UIImageView并将其循环添加到 View 中,将初始帧设置为0,0,1,47,循环的每个 channel 都更改了 ImageView 的中心以将它们隔开。

我总是使用0作为原点。

问题是原点引用位于 ImageView 的中心,假设我们在界面构建器中,则这等效于下面的图像。

如何更改代码中的引用点?

最佳答案

阅读这些答案和您的评论后,我不确定您的意思是什么。

使用UIView,您可以通过2种方式设置位置:

  • center –绝对表示它是中心。
  • frame.origin –左上角,不能直接设置。

  • 如果您希望左下角为x = 300,y = 300,则可以执行以下操作:
    UIView *view = ...
    CGRect frame = view.frame;
    frame.origin.x = 300 - frame.size.width;
    frame.origin.y = 300 - frame.size.height;
    view.frame = frame;
    

    但是,如果您对CALayers的神奇世界更深入(不要忘记导入QuartzCore),您的功能就会更加强大。
    CALayer具有以下功能:
  • position –您看,它没有明确地说“中心”,因此它可能不是中心!
  • anchorPoint –范围在0..1(包括)范围内的CGPoint,用于指定 View 内的点。默认值为x = 0.5,y = 0.5,表示“居中”(而-[UIView center]假定为该值)。您可以将其设置为任何其他值,并且position属性将应用于该点。

  • 时间示例:
  • 您的 View 尺寸为100x100
  • view.layer.anchorPoint = CGPointMake(1, 1);
  • view.layer.position = CGPointMake(300, 300);
  • View 的左上角位于x = 200,y = 200,右下角位于x = 300,y = 300。

  • 注意:旋转图层/ View 时,它将绕anchorPoint旋转,默认情况下是中心。

    既然您只要求 HOW 去做特定的事情,而不是您想要实现的,现在我无能为力了。

    关于ios - 如何设置UIView的原始引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10012406/

    10-16 12:41