iOS Vision 坐标 和 UIKit 坐标转换

2023-08-09  本文已影响0人  移动的键盘
//vision坐标 转 uikit坐标 vison 坐标 原点左下角 0 - 1,  uikit坐标 原点 左上角 屏幕

/// 转换 rect
/// - Parameters:
///   - oldRect: vision 坐标系 rect
///   - imageSize: uikit image的 size
+ (CGRect)convertRect:(CGRect)oldRect imageSize:(CGSize)imageSize
{
    CGFloat w = oldRect.size.width * imageSize.width;
    CGFloat h = oldRect.size.height * imageSize.height;
    CGFloat x = oldRect.origin.x * imageSize.width;
    CGFloat y = imageSize.height - (oldRect.origin.y * imageSize.height) - h;
    return CGRectMake(x, y, w, h);
}

/// 转换 size
/// - Parameters:
///   - oldSize: vision 坐标系 size
///   - imageSize: uikit image的 size
+ (CGSize)convertSize:(CGSize)oldSize imageSize:(CGSize)imageSize
{
    CGFloat w = oldSize.width * imageSize.width;
    CGFloat h = oldSize.height * imageSize.height;
    return CGSizeMake(w, h);
}

/// 转换 point
/// - Parameters:
///   - oldPoint: vision 坐标系 point
///   - oldRect: vision 坐标系 rect
///   - imageSize: uikit image的 size
+ (CGPoint)convertPoint:(CGPoint)oldPoint oldRect:(CGRect)oldRect imageSize:(CGSize)imageSize
{
    CGRect rect = [self convertRect:oldRect imageSize:imageSize];
    CGFloat x = oldPoint.x * rect.size.width + rect.origin.x;
    CGFloat y = imageSize.height - oldRect.origin.y * imageSize.height - rect.size.height * oldPoint.y;
    return CGPointMake(x, y);
}
上一篇 下一篇

猜你喜欢

热点阅读