iphone - 使用 CALayer 的变换对 UIView 的边缘进行抗锯齿处理

标签 iphone objective-c uiview rotation antialiasing

我有一个 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);

旋转对象的边缘后不抗锯齿。我需要对它们进行抗锯齿处理。 请帮帮我。怎么做到的?

最佳答案

一种方法是将图像放在另一个大 5 像素的 View 中。更大的 View 应该有一个透明的栅格化边框,可以平滑 UIImageView 的边缘:

view.layer.borderWidth = 3; 
view.layer.borderColor = [UIColor clearColor].CGColor; 
view.layer.shouldRasterize = YES; 
view.layer.rasterizationScale = [[UIScreen mainScreen] scale];

然后,将您的 UIImageView 放在该父 View 中并将其居中(每边 2.5 像素)。

最后,旋转父 View 而不是 ImageView 。

它工作得很好——您还可以将整个东西封装在创建层次结构的类中。

关于iphone - 使用 CALayer 的变换对 UIView 的边缘进行抗锯齿处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313804/

相关文章:

javascript - 无法可靠地检测 iPhone 纵向和横向模式之间的滚动底部

iphone - 仪表板代码理解

iphone - UIButton 点击​​,同时从其他 XIB 文件加载 NIB

objective-c - 如何在不使用 Objective-C 中的 "exit"命令的情况下组合两个有循环的方法?

swift - 许多子类的一个 XIB View

iphone - 在 Objective-C 中,如何从类别访问私有(private)属性

objective-c - 该对象是否符合 KVC 标准?

objective-c - 未找到 RKObjectMapping.h

objective-c - iOS:如何将 UIViewAnimationCurve 转换为 UIViewAnimationOptions?

ios - MPMoviePlayerController 卡住 AVCaptureVideoPreviewLayer