获取不到自动布局的ScrollView的实际宽度
这个问题出现在我想做一个图片轮询的时候,我放了一个scrollView在view上,布局为:左=20,右=20,上=0,height=200.
我想在代码中获取到真实地scrollview的宽度,但是获取到的值竟然比屏幕的宽度还要大,虽然我可以用一种笨办法,就是用UIScreen获取到屏幕的总宽度,再减去我约束的两边20,也就是减去40,得到最后的实际宽度,但是要是以后约束变了,其他人不知道你这里是直接写死的,那就会出现问题,我总认为系统可以得到动态的实际宽度,问题的图片如下:
上述代码在viewDidLoad中打印了屏幕宽度和实际scrollView的宽度,很明显scrollView的宽度比屏幕宽度要大。
下面是我的约束:
上图的2为我的约束,上图的1为系统通过约束算出的宽度(并不是我设置的),经过多方查询,终于知道原来在viewDidLoad中并不会算出auto layout的值,但是可以在viewDidLayoutSubviews这个方法中进行计算。所以只需要把相应取值的操作放在这个方法中即可。
1 |
override func viewDidLayoutSubviews() { |
结果为:
屏幕宽度: 375.0, scrollView宽度: 335.0
参考地址:stackoverflow
swift项目通过cocoapods管理swift和objective-c进行混合编程注意点
如果Podfile里面使用了use_frameworks!,并且存在oc的库,那么引用oc的库时就不能使用在桥接文件里面引入头文件这个方法了。
解决方法:
Project > General > Linked Framework and Libraries中增加要引用的oc framework。例如AFNetworking
在要使用的类上import AFNetworking
一切ok!