UIButton半透明边框
我有一个自定义按钮,边框应该是半透明的白色。
如果我这样做:
- (void) awakeFromNib { self.layer.cornerRadius = 6.0f; self.layer.borderWidth = 4.0f; self.layer.borderColor = [[UIColor colorWithWhite:1.0f alpha:0.5f] CGColor]; }
我得到了这个 – 透明度,但原始的按钮颜色:
边框是半透明的,但按钮的颜色。
将子图层的颜色设置为您想要按钮的颜色(不要设置按钮本身的背景颜色),并将其相对于按钮的矩形插入其中,
- (void) awakeFromNib { self.layer.cornerRadius = 6.0f; self.layer.borderWidth = 4.0f; self.layer.borderColor = [[UIColor colorWithWhite:1.0f alpha:0.5f] CGColor]; CALayer *sub = [CALayer new]; sub.frame = CGRectInset(self.bounds, 4, 4); sub.backgroundColor = [UIColor redColor].CGColor; [self.layer addSublayer:sub]; }
另一种方法是,如果你想让背景颜色变圆,它会更好地工作,就是使用self.layer和sublayer的背景颜色。 在这种情况下,需要使用边框。
- (void) awakeFromNib { self.layer.cornerRadius = 6.0f; self.tintColor = [UIColor whiteColor]; // make white text self.layer.backgroundColor = [[UIColor colorWithWhite:1.0f alpha:0.4] CGColor]; CALayer *sub = [CALayer new]; sub.cornerRadius = 4.0f; sub.frame = CGRectInset(self.bounds, 4, 4); sub.backgroundColor = [UIColor blueColor].CGColor; [self.layer addSublayer:sub]; }
你尝试过类似的东西:
self.backgroundColor = [[UIColor colorWithWhite:1.0f alpha:0.5f] CGColor];
更简单的方法是通过选择按钮在Interface Builder中设置颜色,然后在Attributes Inspector中选择alpha和背景颜色:
以防万一有人寻找带有透明外边框的UIImage。 如果您只是设置图层边框,您将获得透明边框,但您将看到该边框后面的内部图像,而不是外部图像。 我设法创建一个透明外边框的ImageView。
这个想法很简单。 我从UIImageView中保存了UIImage。 然后我删除UIImage并将初始图层设置为边框图层。 然后我在它上面放了一个新的小子层,并将保存的UIImage设置为它的内容。
#import @interface SSCircleImageView : UIImageView @end
#import "SSCircleImageView.h" @implementation SSCircleImageView const CGFloat borderWidth = 5.0f; const CGFloat borderAlpha = 0.3f; - (void)awakeFromNib { UIImage *image = self.image; self.image = nil; self.clipsToBounds = YES; self.layer.cornerRadius = self.frame.size.width / 2.0; self.layer.borderWidth = borderWidth; self.layer.borderColor = [[UIColor colorWithWhite:1.0f alpha:borderAlpha] CGColor]; CALayer *subLayer = [CALayer layer]; subLayer.frame = CGRectInset(self.bounds, self.layer.borderWidth, self.layer.borderWidth); subLayer.cornerRadius = subLayer.frame.size.width / 2.0; subLayer.contents = (id)image.CGImage; [self.layer addSublayer:subLayer]; } @end
它看起来像这样:
- 如何在故事板中devise一个UIScrollView
- 在UITableViewCell iOS 8(Swift)中隐藏对象
- 从今天的date构build一个NSDate和一个string与时间
- 核心图像人脸检测破64位iOS?
- 如何在科威特进行iPhone应用程序开发
- MFMailComposeViewController栏的背景颜色在iOS7中不变
- iPhone window.open(url,’_ blank’)无法在移动版Safari中打开链接
- 嵌套的UIScrollviews,如何使一个缩小,而另一个同时放大?
- UIImagePickerController不会从/ tmp / capture中删除临时video捕获文件