如何在 UIView 上设置平滑边框颜色?
Posted
技术标签:
【中文标题】如何在 UIView 上设置平滑边框颜色?【英文标题】:How to set smooth border color on UIView? 【发布时间】:2012-06-29 13:25:50 【问题描述】:我在视图控制器上添加了一个 UIView。最初我在 UIView 上设置了边框颜色,现在它看起来很平滑。但是当通过手势识别器缩放该视图时,边框颜色会像素化。
下面是初始代码
- (id)initWithImage:(UIImage*)image delegate:(id)delegat
if ( (self = [super initWithImage:image]) )
self.layer.masksToBounds = YES;
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width+1, self.frame.size.height+1);
self.contentMode = UIViewContentModeCenter;
ratio = image.size.height / image.size.width;
itemType = 2;
self.userInteractionEnabled =TRUE;
self.delegate = delegat;
self.layer.borderColor = [UIColor redColor].CGColor;
self.layer.borderWidth = 4;
scaleFactor = 1.0;
rotateAngle = 0.0;
fontSize = 22;
self.contentScaleFactor = 1.0;
if(image != nil)
frameWidth = image.size.width;
frameHeight = image.size.height;
else
frameWidth = self.frame.size.width;
frameHeight = self.frame.size.height;
[self addGestureRecognizers];
return self;
这是旋转代码的代码
- (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged)
// To undo the action : store information
[[UIAppDelegate viewController] storeAction:CHUndoActionTypeRotate item:self];
[gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]);
[gestureRecognizer setRotation:0];
这是我在旋转视图时得到的
【问题讨论】:
【参考方案1】:这是一个看似很常见的问题。您想要的是对边界进行抗锯齿处理。 Here is one post 有解决方案和here is another。
基本上你可以使用 UIImageView 并在图像周围添加一个 1 像素的透明边框,这样实际的边框就会被消除锯齿。
【讨论】:
我正在使用 jpeg 图像,所以我应该如何做边框来抗锯齿。我使用的是 UIView 而不是 UIImageView。我应该如何在 UIView 中添加一个像素的透明边框。以上是关于如何在 UIView 上设置平滑边框颜色?的主要内容,如果未能解决你的问题,请参考以下文章
Cocoa Touch:如何改变 UIView 的边框颜色和粗细?