采用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);
目录
相关文章
|
前端开发 JavaScript
【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
136 1
领域驱动设计问题之在DDD中,交易主订单和交易子订单代表了什么
领域驱动设计问题之在DDD中,交易主订单和交易子订单代表了什么
127 0
|
11月前
|
存储 消息中间件 分布式计算
某全球领先网络解决方案提供商:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 的改造实践
某全球领先网络解决方案提供商早期架构面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot 、 Iceberg 及 Kyuubi 技术栈,依赖于 Doris 的实时数据湖能力及高性能 OLAP 分析能力,统一数据湖仓及查询分析引擎,显著提升了查询性能及系统稳定性,同时实现资源成本降低 30%。
279 8
某全球领先网络解决方案提供商:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 的改造实践
|
人工智能 分布式计算 大数据
开源大数据平台 3.0 技术解读
阿里云研究员,阿里云计算平台事业部开源大数据平台负责人王峰围绕新一代的流式湖仓、全面 Serverless 化、更智能的开源大数据等多维度解读开源大数据平台 3.0~
1656 1
开源大数据平台 3.0 技术解读
|
12月前
|
前端开发 JavaScript API
前端开发新趋势:探索WebAssembly与WebGL在游戏开发中的应用
【10月更文挑战第1天】前端开发新趋势:探索WebAssembly与WebGL在游戏开发中的应用
425 2
|
缓存 Java Maven
SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程
Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。
179 0
|
云安全 运维 架构师
阿里云ACE认证含金量高不高?考试内容难不难?
IT行业可以说是现在最热门的行业之一,很多人都想在这一行有所建树,于是他们就会选择考取阿里云人才认证来帮助自己提升技能、升职加薪。
1547 1
阿里云ACE认证含金量高不高?考试内容难不难?
|
负载均衡 算法 应用服务中间件
解密Nginx负载均衡:实现流量分发与故障转移
解密Nginx负载均衡:实现流量分发与故障转移
318 0
|
数据建模 测试技术 应用服务中间件
在阿里云申请SSL证书多少钱?免费版与付费版申请流程介绍
阿里云2024年提供免费及付费SSL证书,免费版年领限20张,适合测试环境,352元/年起售付费版。个人/企业用户一年可领20张免费DV单域名证书。付费证书享折扣,如WoSign DV仅352元/年。下文将指导您快速领取、申请阿里云提供的免费版和收费版SSL证书。
在阿里云申请SSL证书多少钱?免费版与付费版申请流程介绍
|
12月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
177 0