使用UIView+Extension请注意:令人捉急的centerX导致子控件显示位置不对的矫正


注意centerX的使用

最近在增加项目的功能,写着写着就发现一个问题:

先上图来展示结果 使用UIView+Extension请注意:令人捉急的centerX导致子控件显示位置不对的矫正_第1张图片


为了适配label右上角的红圆圈的位置,觉得很简单的,但是一不小心就掉进陷阱了。

采用的方案是 :封装一个包含着imageView,底部label和numlabel的控件 并且考虑覆盖一个button,来监听点击事件。

  底部的汉字的label采用居中显示的,并且位置也是居中,但是呢这个居中就得注意了:

        self.subTitle.centerX = self.centerX;(⊙o⊙)哦一不小心掉进去了,然后显示的结果真是匪夷所思,

已成交怎么跑到第三个位置了。

使用UIView+Extension请注意:令人捉急的centerX导致子控件显示位置不对的矫正_第2张图片

查看控件的结构层次:

使用UIView+Extension请注意:令人捉急的centerX导致子控件显示位置不对的矫正_第3张图片

怎么也找不到其他的来个label的。


当时也没在意,用其他方法搞定了,修复显示位置的偏差。年假过来发现还是有其他部分用到这个封装的控件 ,

label的问题只要修改成self.subTitle.centerX = self.centerX;就会出现位置偏差,

再仔细想一下,这个centerX是相对谁,(⊙o⊙)…底部的label被添加到封装的控件了 她的位置就应该相对其父控件(即封装的控件)

这将导致位置的偏差,就不足为奇了,self的centeX 是在整个屏幕的绝对位置,而subtitle的centerX则是相对于其父控件的位置

,所以就导致 第一个label显示正常,但是第二个就会随着偏移一个距离,正好偏移到第三个位置,这时的第三个subtitle的x方向

已经偏移到屏幕界外了!so使用UIView + Extension 确实方便,但是问题就是如果不注意控件的层次关系就会导致显示的偏差。

修正之后的代码就很容易知道了:

self.subTitle.centerX = self.width/2;



你可能感兴趣的:(使用UIView+Extension请注意:令人捉急的centerX导致子控件显示位置不对的矫正)