给button加边框 . 圆角弧度 . 加阴影
avatarImage = [UIButton buttonWithType:UIButtonTypeCustom];
//给按钮加一个白色的板框
avatarImage.layer.borderColor = [[UIColor whiteColor] CGColor];
avatarImage.layer.borderWidth = 1.0f;
//给按钮设置弧度,这里将按钮变成了圆形
avatarImage.layer.cornerRadius = 25.0f;
avatarImage.backgroundColor = [UIColor redColor];
avatarImage.layer.masksToBounds = YES;
iOS UIButton 设置图片不变型 setImage:
[btn.imageView setContentMode:UIViewContentModeScaleAspectFill];
// 去除按钮在叠加视图中的按下延迟
tableView.delaysContentTouches = NO;
在设置UIButton文字和图标对齐方式的时候,需要注意:
setTitleEdgeInsets和setImageEdgeInsets方法只对通过setTitle和setImage方法设置的文字和图片有效。
很多人错将setBackgroundImage当成setImage使用,结果看到了一个图标被作为背景图片拉伸了。之后任怎么设置setImageEdgeInsets都看不到效果。
下面顺便贴出一位哥们写的代码,效果不错!
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 150, 50)];
[button setTitle:@"HHH" forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"narrowend.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"panelicon.png"] forState:UIControlStateNormal];
[button setImageEdgeInsets:UIEdgeInsetsMake(0.0, -20, 0.0, 0.0)];
代码解释:
[button setImageEdgeInsets:UIEdgeInsetsMake(<#CGFloat top#向上偏移量>, <#CGFloat left#向左偏移量>, <#CGFloat bottom#向下偏移量>, <#CGFloat right#向右上偏移量>)];
同时还可以设置文字的偏移量:
[button setTitleEdgeInsets:UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)];
button切图自适应
以前公司切图的
时候是切@2x和@3x的图的,目前是只切@3x的,图片缩小影响不大,放大就会很糊,如果直接给3倍尺寸的图,setI
mage方法会取三倍的,导致要么图片过大,button固定尺寸了,又会按钮响应范围过小,此时可以把图片放到Images.xcassets里边@2x里边,默认用2x的图,3x找不到的话还是会用这个图,可是,这个图的尺寸就是3x的,不知道有问题没有,先这样。
圆角button添加点击后效果
UIImage *narmalImg = [CommonFuction imageWithColor:[CommonFuction colorFromHexRGB:@"ffffff"] size:CGSizeMake(68, 25)];
UIImage *selectImg = [CommonFuction imageWithColor:[CommonFuction colorFromHexRGB:@"f7c250"] size:CGSizeMake(68, 25)];
UIButton *rechargeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
rechargeBtn.frame = CGRectMake(240, 10, 68, 25);
[rechargeBtn setTitle:@"充值" forState:UIControlStateNormal];
[rechargeBtn setTitleColor:[CommonFuction colorFromHexRGB:@"d14c49"] forState:UIControlStateNormal];
[rechargeBtn setTitleColor:[CommonFuction colorFromHexRGB:@"ffffff"] forState:UIControlStateHighlighted];
[rechargeBtn setBackgroundImage:narmalImg forState:UIControlStateNormal];
[rechargeBtn setBackgroundImage:selectImg forState:UIControlStateHighlighted];
rechargeBtn.titleLabel.font = [UIFont boldSystemFontOfSize:14.0f];
rechargeBtn.layer.cornerRadius = 12.5f;
rechargeBtn.layer.masksToBounds = YES;
rechargeBtn.layer.borderWidth = 0.5;
rechargeBtn.layer.borderColor = [CommonFuction colorFromHexRGB:@"d14c49"].CGColor;
[rechargeBtn addTarget:self action:@selector(rechargeRebi) forControlEvents:UIControlEventTouchUpInside];
[rebiItemView addSubview:rechargeBtn];
视图圆角加阴影masksToBounds属性
**(如果设置masksToBounds为YES,那么阴影就会无效,下面代码可以解决这个问题。通过两个layer,一个实现阴影,一个圆角图片)
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor blueColor].CGColor;
sublayer.shadowOffset = CGSizeMake(0, 3);
sublayer.shadowRadius = 5.0;
sublayer.shadowColor = [UIColor blackColor].CGColor;
sublayer.shadowOpacity = 0.8;
sublayer.frame = CGRectMake(30, 30, 128, 192);
sublayer.borderColor = [UIColor blackColor].CGColor;
sublayer.borderWidth = 2.0;
sublayer.cornerRadius = 10.0;
[self.view.layer addSublayer:sublayer]; //每个UIView都包括一个root layer
CALayer *imageLayer = [CALayer layer];
imageLayer.frame = sublayer.bounds;
imageLayer.cornerRadius = 10.0;
imageLayer.contents = (id) [UIImage imageNamed:@"BattleMapSplashScreen.jpg"].CGImage;
imageLayer.masksToBounds = YES; //如果背景是图片的话设置layer圆角后图片不会更随圆角,需要设置masksToBounds为YES
[sublayer addSublayer:imageLayer];
.masksToBounds : 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,请设为 true