我的UITableViewCell
包含UIImageView'.
I need to display a 2nd
UIImageView that is centered on the 1st one.
(this 2nd UIImageView is not in the cell, but to be displayed on the screen coordinate system, so that it can be dragged outside of the
UITableView that has the
UITableViewCell`。
我可以获得第一个x,y
的{{1}},但此UIImageView
相对于单元格。
如何将此x,y
转换为相对于屏幕,用于初步定位第一个居中的第二个x,y
?
我试过了: CGPoint screen_point = [device_icon_UIImageView convertPoint:device_icon_UIImageView.center toView:nil]; ...但是screen_point是单元格中的相对x,y(615,85),而不是屏幕(窗口)坐标系中device_icon_UIImageView的x,y中心(应该是大约530,280)。
代码...................................
.H ......................
@interface ataglance_central_controller:UIViewController
{
UIImageView * e_fairy_UIImageView;
}
@property(非原子,保留)UIImageView * e_fairy_UIImageView;
的.m ............................................. 。 @interface ataglance_central_controller() { } @结束 @synthesize e_fairy_UIImageView;
UIImageView
这是第一部UIIMAGEVIEW,在细胞中:................ UIImageView * device_icon_UIImageView =(UIImageView *)[cell.contentView viewWithTag:BASE_UIIMAGEVIEW_TAG + ui ++]; ...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[self.e_fairy_UIImageView setContentMode:UIViewContentModeScaleAspectFit]; [self.view addSubview:self.e_fairy_UIImageView];
...在屏幕底部显示self.e_fairy_UIImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"E-fairy.png" ]];
self.e_fairy_UIImageView.center = screen_point;
,但是单元格的表位于屏幕的上半部分。
答案 0 :(得分:1)
看看UIView方法convertPoint:toView:,convertPoint:fromView:和相关方法。这些允许在UIView坐标系之间进行转换。如果你离开toView或fromView nil,它们也将转换为/从窗口坐标。
答案 1 :(得分:0)
我建议使用UIView的convertRect:toView或convertPoint:toView方法(在所有子类中都可用)。您的实现将如下所示:
CGRect rect = [cell convertRect:imageView.frame toView:self.view];
,或者
CGPoint point = [cell convertPoint:imageView.center toView:self.view];
答案 2 :(得分:0)
如果我理解正确的话,我想我做了类似的事情。 1)将单元格或imageView的框架定义为CGRect specifiedRect = yourCellOrImageView.frame
,2)使用该框架yourObject.frame = CGRectMake(specifiedRect.origin.x, specifiedRect.origin.y, objectWidth, objectHeight);
答案 3 :(得分:0)
我修好了。 我放弃了尝试将相对单元格x,y转换为屏幕x,y。 相反,解决方案是简单地将相对单元格x,y添加到UITableView的绝对屏幕x,y。
CGPoint icon_screen_CGPoint;
icon_screen_CGPoint.x = absolute screen x + device_icon_UIImageView.center.x;
icon_screen_CGPoint.y = absolute screen y + device_icon_UIImageView.center.y;
// Create screen UIImageView:
self.e__UIImageView = [ [UIImageView alloc] initWithImage:[UIImage imageNamed: @"E.png" ] ];
// Position it over center of cell icon:
self.e__UIImageView.center = icon_screen_CGPoint;
[self.view addSubview: self.e__UIImageView];
甜。