UIButton内部 改变文字跟图片的位置

//根据效果图1我们先来获得imageView的center

CGPoint imageViewCenterNow = button.imageView.center;

//根据效果图1我们先来获得titleLabel的center

CGPoint titleLabelCenterNow = button.titleLabel.center;

//获得Button的Center

CGPoint buttonBoundsCenter = CGPointMake(CGRectGetMidX(button.bounds), CGRectGetMidY(button.bounds));

//根据效果图2我们先来获得imageView最终想要得到的center

CGPoint imageViewCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetMidY(button.imageView.bounds));

//根据效果图2我们再来获得titleLabel最终想要得到的center

CGPoint titleLabelCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetHeight(button.bounds) - CGRectGetMidY(button.titleLabel.bounds));

//根据两个图的差异我们来设置imageEdgeInsets

//因为我们要将图上移,所以top一定是负值,bottom一定是正值,因为我们要将图右移,所以left一定是正值,right一定是负值

CGFloat imageEdgeInsetsTop = imageViewCenter.y - imageViewCenterNow.y;

CGFloat imageEdgeInsetsLeft = imageViewCenter.x - imageViewCenterNow.x;

CGFloat imageEdgeInsetsBottom = -imageEdgeInsetsTop;

CGFloat imageEdgeInsetsRight = - imageEdgeInsetsLeft;

UIEdgeInsets imageInsets = UIEdgeInsetsMake(imageEdgeInsetsTop, imageEdgeInsetsLeft, imageEdgeInsetsBottom, imageEdgeInsetsRight);

button.imageEdgeInsets = imageInsets;

//根据两个图的差异我们来设置titleEdgeInsets,跟image同理

CGFloat titleEdgeInsetsTop = titleLabelCenter.y - titleLabelCenterNow.y;

CGFloat titleEdgeInsetsLeft = titleLabelCenter.x - titleLabelCenterNow.x;

CGFloat titleEdgeInsetsBottom = -titleEdgeInsetsTop;

CGFloat titleEdgeInsetsRight = -titleEdgeInsetsLeft;

UIEdgeInsets titleInsets = UIEdgeInsetsMake(titleEdgeInsetsTop, titleEdgeInsetsLeft, titleEdgeInsetsBottom, titleEdgeInsetsRight);

button.titleEdgeInsets = titleInsets;

原创者:http://neusoftios.blog.51cto.com/9977509/1620510

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,310评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,742评论 6 30
  • 一个自定义的圆环,可转动,给每个按钮添加跳转或者事件,自己加了一些点击时播放系统的声音和振动,直接上代码,粘贴复制...
    迷恋代码阅读 727评论 0 3
  • Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,...
    45b645c5912e阅读 3,189评论 0 21
  • 烦躁…一个人太累,所有事情一个人来!讨厌这样没有伙伴的工作方式,付出多少不重要,重要的是没人支持工作。
    事儿2017阅读 265评论 0 0

友情链接更多精彩内容