CSS / CGRect 定位

Posted

技术标签:

【中文标题】CSS / CGRect 定位【英文标题】:CSS / CGRect Positioning 【发布时间】:2019-09-17 12:48:50 【问题描述】:

CSS

我有一个带有表计划的数据库,每个表都有geometry 的属性,具有xy 值。 这些值在 Web 浏览器中呈现时呈现如下:

getStyles() 
   const  x, y  = this.props.geometry || ;
   return 
      left: `$x%`,
      top: `$y%`,
   ;

显然xy 是100 的百分比值。

ios

我为每个表的视图创建了一个UIScrollView 和一个子类 (TableView)。 当视图被添加到滚动视图时,TableView 内部的一个方法被调用来更新表格位置,如下所示:

- (void)updateTablePosition:(Table *)table 
    if (self.superview) 
        float x_position    =   (self.superview.frame.size.width / 100) * table.position.x;
        float y_position    =   (self.superview.frame.size.height / 100) * table.position.y;
        [self setFrame:CGRectMake(x_position, y_position, self.frame.size.width, self.frame.size.height)];
    

位置很完美!但是,我对每个 TableView 都有一个平移手势,它允许我移动它们并更改位置,唯一的问题是我无法弄清楚如何将此值转换回 CSS 中的值(百分比) .

编辑:删除代码以更改位置,因为它完全错误。

- (void)tablePanAction:(UIPanGestureRecognizer *)sender 

    UIScrollView *scrollView        =   (UIScrollView *)self.superview;

    if (sender.state == UIGestureRecognizerStateBegan) 
        [scrollView setScrollEnabled:NO];
    

    CGPoint updatedLocation         =   [sender locationInView:scrollView];
    self.center                     =   updatedLocation;

    if (sender.state == UIGestureRecognizerStateEnded) 

        // from here, we should convert the updated location
        // back to a relative percentage of the scrollView

    


【问题讨论】:

【参考方案1】:

事实证明.. 答案非常简单,只是稍微思考了一下。无论如何,我正在回答这个问题,以防万一有人不完全了解数学。

新的Table.geometry 位置可以这样计算:

float new_css_x   =   (self.frame.origin.x / scrollView.frame.size.width) * 100;
float new_css_y   =   (self.frame.origin.y / scrollView.frame.size.height) * 100;

【讨论】:

以上是关于CSS / CGRect 定位的主要内容,如果未能解决你的问题,请参考以下文章

将元素定位到具有安全区域的 CGRect

动态调整大小的视图定位

css中定位的三种方式

Css3之基础-11 Css定位(定位概念 定位方式)

selenium之css定位小结

CSS绝对定位与相对定位的区别?