采用SDAutoLayout布局的图片无法旋转45度问题及解决方案

简介: 采用SDAutoLayout布局的图片无法旋转45度问题及解决方案

由于SDAutoLayout是采用的延迟布局,采用transform旋转45度可能看不到旋转的图片(旋转90度可以看到)。解决方案对图片使用frame,不采用SDAutoLayout布局。

有问题的代码:

- (UIImageView *)photoImageView {
    if(!_photoImageView)
    {
        _photoImageView = [self createImageView];
        _photoImageView.backgroundColor = [UIColor clearColor];
//        _photoImageView.image = nil;
//        _photoImageView.hidden = NO;
//        _photoImageView.layer.cornerRadius = COMMON_CORNER_RADIUS;
        [_photoImageView.layer setMasksToBounds:YES];
        _photoImageView.contentMode = UIViewContentModeScaleAspectFill;//等比缩放图片把整个ImageView填充满,所以可能会出现图片部分显示不出来 UIViewContentModeScaleAspectFit;//等比缩放把图片整体显示在ImageView中,所以可能会出现ImageView有空白部分
//        [_photoImageView sd_setImageWithURL:[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1590415038677&di=82015f4c7e78320f539b5b350cbef411&imgtype=0&src=http%3A%2F%2Fg.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F0e2442a7d933c895f7116ee6d01373f08202003b.jpg"]];
//        [_photoImageView addCornerWithCornerRadius:80.0];
//        _photoImageView.frame = CGRectMake((475 - 357)/2, (FULL_HEIGHT-kNavBarAndStatusBarHeight- 357 -65 - 36 - 20 -24)/2, 357, 357);
        _photoImageView.transform = CGAffineTransformMakeRotation(M_PI_4);
//        _photoImageView.center = self.center;
//        _photoImageView.transform = CGAffineTransformMakeRotation(M_PI/4);
//        CGAffineTransform transform= CGAffineTransformMakeRotation(0.785398);
//        _photoImageView.transform = transform;//旋转
    }
    return _photoImageView;
}
    self.photoImageView.sd_layout
    .leftSpaceToView(self.describeTitleBackground, (475 - 357)/2)
    .topSpaceToView(self.describeTitleBackground, (FULL_HEIGHT-kNavBarAndStatusBarHeight- 357 -65 - 36 - 20 -24)/2)
    .widthIs(357)
    .heightIs(357);

正确的代码:

- (UIImageView *)photoImageView {
    if(!_photoImageView)
    {
        _photoImageView = [self createImageView];
        _photoImageView.backgroundColor = [UIColor clearColor];
//        _photoImageView.image = nil;
//        _photoImageView.hidden = NO;
//        _photoImageView.layer.cornerRadius = COMMON_CORNER_RADIUS;
        [_photoImageView.layer setMasksToBounds:YES];
        _photoImageView.contentMode = UIViewContentModeScaleAspectFill;//等比缩放图片把整个ImageView填充满,所以可能会出现图片部分显示不出来 UIViewContentModeScaleAspectFit;//等比缩放把图片整体显示在ImageView中,所以可能会出现ImageView有空白部分
//        [_photoImageView sd_setImageWithURL:[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1590415038677&di=82015f4c7e78320f539b5b350cbef411&imgtype=0&src=http%3A%2F%2Fg.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F0e2442a7d933c895f7116ee6d01373f08202003b.jpg"]];
//        [_photoImageView addCornerWithCornerRadius:80.0];
        _photoImageView.frame = CGRectMake((475 - 357)/2, (FULL_HEIGHT-kNavBarAndStatusBarHeight- 357 -65 - 36 - 20 -24)/2, 357, 357);
        _photoImageView.transform = CGAffineTransformMakeRotation(M_PI_4);
//        _photoImageView.center = self.center;
//        _photoImageView.transform = CGAffineTransformMakeRotation(M_PI/4);
//        CGAffineTransform transform= CGAffineTransformMakeRotation(0.785398);
//        _photoImageView.transform = transform;//旋转
    }
    return _photoImageView;
}
    self.photoImageView.sd_layout
//    .leftSpaceToView(self.describeTitleBackground, (475 - 357)/2)
//    .topSpaceToView(self.describeTitleBackground, (FULL_HEIGHT-kNavBarAndStatusBarHeight- 357 -65 - 36 - 20 -24)/2)
//    .widthIs(357)
//    .heightIs(357);
目录
相关文章
|
29天前
如何实现图片垂直旋转90度的问题
如何实现图片垂直旋转90度的问题
18 2
|
4月前
|
容器
软件开发常见流程之物理像素导致图片变形问题如何解决,先把图缩放为原先的两倍,再缩放,利用Cutterman生成矢量图
软件开发常见流程之物理像素导致图片变形问题如何解决,先把图缩放为原先的两倍,再缩放,利用Cutterman生成矢量图
|
6月前
|
编解码 JavaScript 算法
通过PHAsset获取的图片上传后变大和图像被旋转90度问题完美解决方案
通过PHAsset获取的图片上传后变大和图像被旋转90度问题完美解决方案
92 4
|
6月前
|
前端开发
【零基础入门前端系列】—旋转、缩放、倾斜、过渡(二十三)
【零基础入门前端系列】—旋转、缩放、倾斜、过渡(二十三)
|
数据可视化 PyTorch 算法框架/工具
数据增强之裁剪、翻转与旋转
数据增强之裁剪、翻转与旋转
144 0
数据增强之裁剪、翻转与旋转
|
定位技术
Echarts实战案例代码(39):地理坐标整体地图背景色渐变效果和字体随地图缩放的解决方案
Echarts实战案例代码(39):地理坐标整体地图背景色渐变效果和字体随地图缩放的解决方案
302 0
|
移动开发 前端开发 HTML5
前端|3D立体视频翻转动画
前端|3D立体视频翻转动画
222 0
如何在 kitten 里生成动态个数个立方体(水平方向平铺)以及避免闪烁问题(2)
如何在 kitten 里生成动态个数个立方体(水平方向平铺)以及避免闪烁问题
如何在 kitten 里生成动态个数个立方体(水平方向平铺)以及避免闪烁问题(2)