CSS / CGRect 定位
Posted
技术标签:
【中文标题】CSS / CGRect 定位【英文标题】:CSS / CGRect Positioning 【发布时间】:2019-09-17 12:48:50 【问题描述】:CSS
我有一个带有表计划的数据库,每个表都有geometry
的属性,具有x
和y
值。
这些值在 Web 浏览器中呈现时呈现如下:
getStyles()
const x, y = this.props.geometry || ;
return
left: `$x%`,
top: `$y%`,
;
显然x
和y
是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 定位的主要内容,如果未能解决你的问题,请参考以下文章