UIButton将title和image放置在任意位置上

来源:互联网 发布:光纤网络布线认识 编辑:程序博客网 时间:2024/05/17 01:53

实现效果图:


  1. // 设置内容对齐方式,并设置内容距离四周距离(上左下右)  
  2. button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;  
  3. button.contentEdgeInsets = UIEdgeInsetsMake(0,1000);  
  4.   
  5. // 利用EdgeInsets属性将title和image放置在任意位置上,实现上图效果  
  6.   
  7. /* 
  8.  UIButton自带了UIImageView和UILabel两个控件,可以显示image和title,通过imageEdgeInsets和titleEdgeInsets属性可以将image和title放置在任意位置上 
  9.   
  10.  其实UIImageView和UILabel是相互联系的,在设置属性时需要将两者当做一个整体来考虑 
  11.  实时计算图片宽高 CGSize imageSize = button.imageView.frame.size; 
  12.  实时计算文字宽高 CGSize stringSize = [button.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:button.titleLabel.font}]; 
  13. */  
  14.   
  15. #define UI_SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width  
  16. #define UI_BUTTON_HEIGH 49  
  17.   
  18. // 在默认情况下,图片在前文字在后显示,且中间没有间距(如button1)  
  19. [button1 setImageEdgeInsets:UIEdgeInsetsMake(0000)];  
  20. [button1 setTitleEdgeInsets:UIEdgeInsetsMake(0000)];  
  21.   
  22. // 让图片和文字之间间距为10(如button2)  
  23. [button2 setImageEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/20, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+10)];  
  24. [button2 setTitleEdgeInsets:UIEdgeInsetsMake(0, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2+100, (UI_SCREEN_WIDTH-imageSize.width-stringSize.width-10)/2)];  
  25.   
  26. // 让图片距离右侧边缘10,让文字距离左侧边缘10(如button3)  
  27. [button3 setImageEdgeInsets:UIEdgeInsetsMake(0, UI_SCREEN_WIDTH-imageSize.width-10010-stringSize.width)];  
  28. [button3 setTitleEdgeInsets:UIEdgeInsetsMake(010-imageSize.width0, UI_SCREEN_WIDTH-stringSize.width-10)];  
  29.   
  30. // 让图片距离上侧边缘10,让文字距离下侧边缘10(如button4)  
  31. [button4 setImageEdgeInsets:UIEdgeInsetsMake(100, UI_BUTTON_HEIGH-10-imageSize.height0)];  
  32. [button4 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-10-stringSize.height0100)];  
  33.   
  34. // 让图片和文字都居中显示,且图片距离上侧边缘5,文字距离下侧边缘5(如button5)  
  35. [button5 setImageEdgeInsets:UIEdgeInsetsMake(5, (UI_SCREEN_WIDTH-imageSize.width)/2, UI_BUTTON_HEIGH-5-imageSize.height, (UI_SCREEN_WIDTH-imageSize.width)/2-stringSize.width)];  
  36. [button5 setTitleEdgeInsets:UIEdgeInsetsMake(UI_BUTTON_HEIGH-5-stringSize.height, (UI_SCREEN_WIDTH-stringSize.width)/2-imageSize.width5, (UI_SCREEN_WIDTH-stringSize.width)/2)];  


0 0
原创粉丝点击