一开始拿到宽度的时候,还在viewDidLoad方法中,按钮的文字还没显示出来,不显示就没去算,算出来label的宽度就是0,在调用viewDidLoad的时候,view刚刚加载完,然后调用初始化标题栏的方法,创建了一堆的按钮,并且给按钮设置了文字,但是仅仅是将控件加进去创建好,并没有准备要显示,在准备要显示的时候才会计算子控件的宽度,比如说按钮里面label的宽度,按钮的宽度,layoutstubviews方法中做的一些操作,如根据文字算高度,是在要显示的时候才会算,因为不显示干嘛要去算呢,所以在viewDidLoad中去拿宽度的时候,由于还没显示,就没有去算,这个时候拿到的宽度是0
如何解决呢:
强制让它去算,
btn.titleLabel sizeToFit ,这个方法的作用是根据里面的内容算出宽度和高度,只要拿到这个label,调用一下sizeToFit ,label就根据它文字的多少,算出它文字的宽高
是这样的,你可以不加“:”号,这样就不传递任何值。但是如果你要加“:”号的话,一定会将当前的这个按钮传递到你指定的参数中。
网友评论