Ole*_*leg 24 iphone objective-c rotation antialiasing uiview
我有一个UIView使用CALayer变换旋转的对象:
// Create uiview object.
UIImageView *block = [[UIImageView alloc] initWithFrame....]
// Apply rotation.
CATransform3D basicTrans = CATransform3DIdentity;
basicTrans.m34 = 1.0/-distance;
blockImage.layer.transform = CATransform3DRotate(basicTrans, rangle, 1.0f, 0.0f, 0.0f);
Run Code Online (Sandbox Code Playgroud)
旋转后,对象的边缘不会抗锯齿.我需要反他们.请帮帮我.怎么做到呢?
tar*_*mes 43
一种方法是将图像放在另一个大5像素的视图中.较大的视图应该有一个透明的栅格化边框,可以平滑UIImageView的边缘:
view.layer.borderWidth = 3;
view.layer.borderColor = [UIColor clearColor].CGColor;
view.layer.shouldRasterize = YES;
view.layer.rasterizationScale = [[UIScreen mainScreen] scale];
Run Code Online (Sandbox Code Playgroud)
然后,将UIImageView放在此父视图中并居中(每个边缘周围2.5像素).
最后,旋转父视图而不是图像视图.
它工作得很好 - 你也可以在创建层次结构的类中封装整个事物.
tou*_*bun 25
检查allowsEdgeAntialiasing财产CALayer.
block.layer.allowsEdgeAntialiasing = YES; // iOS7 and above.
Run Code Online (Sandbox Code Playgroud)