小编今天在开发中遇到一个很奇怪的问题 ,可能是因为基础不太扎实,本文适合新手,大牛放过O(∩_∩)O
问题是这样的 我在项目中自定义了一个View 然后在View中添加三个按钮,这个三个按钮的图文布局是上图下文,达到这种布局的方法很多,小编为了节省时间就用了UIEdgeInsetsMake这个方法来调整,使用过程中,因为该自定义的View需要两块,所以在控制其中给按钮的图文赋值,在自定义中设置UIEdgeInsetsMake,于是出现了一个 问题 当我设置[self.oneBtnsetImageEdgeInsets:UIEdgeInsetsMake(-self.oneBtn.titleLabel.intrinsicContentSize.height,0,0, -self.oneBtn.titleLabel.intrinsicContentSize.width)];和[self.oneBtnsetTitleEdgeInsets:UIEdgeInsetsMake(self.oneBtn.currentImage.size.height+20*HEIGHT, -self.oneBtn.currentImage.size.width,0,0)];的时候 效果并非是上下 而是左上和右下,找了好久都没发现问题,偶然间对比了下自己的demo 发现 当你在自定义控件中使用UIEdgeInsetsMake 前提条件必须是已经设置了图文属性值,否则是空的,从而达不到想要的效果 于是小编 更改了方案 写了一个分类 将UIEdgeInsetsMake 用枚举来设置内边距 ,方法放到控制器 创建这个自定义View并设置了View中按钮的图文属性之后 调用分类中的方法,这样就达到了想要的效果。另外 附上设置图文左右交换的另外一个方法 :button.transform = CGAffineTransformMakeScale(-1.0, 1.0);
button.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0);
button.imageView.transform = CGAffineTransformMakeScale(-1.0, 1.0);
利用transform属性来设置,据说是国外一个大牛写的。小编试过了,可行。这样就不用头疼的去调整UIEdgeInsetsMake的值了。