IOS UIButton。。。

给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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值