我需要旋转UIImageView:
UIImageView *img = [[UIImageView alloc] init];
img.layer.borderWidth = 3.0;
img.layer.borderColor = UIColorFromRGB(0xffffff).CGColor;
img.layer.shadowColor = UIColorFromRGB(0x000000).CGColor;
CATransform3D transform = CATransform3DMakeRotation ([Helper degreesToRadians:(5)], 1, 1, 1);
img.layer.shadowRadius = 2.0;
img.layer.shouldRasterize = YES;
问题是边框根本不平滑:
答案 0 :(得分:3)
尝试在图片周围添加透明边框(可能是1px)。见link。
查看该页面中的UIImage+Alpha
部分。
答案 1 :(得分:2)
我看到这个问题的大部分答案是添加1px透明边框,但只有在UIImageView周围没有使用任何边框时才有效,如果UIImageView本身有边框并且我们旋转它然后边框不平滑。我正在努力弄清楚如何解决这个问题。
这是我要解决的问题
UIImage *thumbnail = [photo thumbnailImage:thumbnailSize.width
transparentBorder:2
cornerRadius:0
interpolationQuality:kCGInterpolationHigh];
CGPoint randomPoint = [self getRandomOriginPoint];
UIImageView *thumbnailView = [[UIImageView alloc] initWithFrame:CGRectMake(10.0, 10.0, thumbnail.size.width, thumbnail.size.height)];
[thumbnailView.layer setBorderWidth:2];
[self setContentMode:UIViewContentModeCenter];
[thumbnailView.layer setBorderColor:[UIColor whiteColor].CGColor];
[thumbnailView.layer setShadowOffset:CGSizeMake(-3.0, 3.0)];
[thumbnailView.layer setShadowRadius:3.0];
[thumbnailView.layer setShadowOpacity:1.0];
thumbnailView.layer.shouldRasterize = YES;
我使用了来自here的UIImage + Resize.h来获取我的代码中的缩略图,所以即使你以任何角度旋转图像,边框看起来都很完美!
答案 2 :(得分:1)
无需使用类别,使得假设最少的解决方案
#import <QuartzCore/QuartzCore.h>
我们将使用以下变量
UIView *myView;
已经确认这适用于所有类型的UIImageViews / UIViews
myView.layer.shouldRasterize = YES; //the single line that solved this problem from the above
您无需为此添加任何类型的边框。
CATransform3D rotate = CATransform3DIdentity;
myView.layer.shouldRasterize = YES;
rotate = CATransform3DRotate(rotate,M_PI_4/8,0.0,0.0,1);
myView.layer.transform = rotate;
注意:提供此答案是为了将信息合并到一个答案中,以消除其他一些要求。在这个例子中,我使用M_PI_4 / 8,因为它是一个很好的视角,如果你有一个Stickie Note正在实现的视图。