采用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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值