我正在尝试将用objective-c编写的代码转换为Swift语言。 在以下几行中:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if (scrollView.contentOffset.y < self.mapView.frame.size.height*-1 ) {
[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x, self.mapView.frame.size.height*-1)];
}
}
我遇到了这个参数,由于文档的原因,它应该被评估为布尔类型
self.mapView.frame.size.height*-1
有人可以告诉我这里发生了什么以及这个表达式如何被评估为布尔值?指针是无法将其转换为Swift的东西,你能帮忙怎么做?
提前致谢
答案 0 :(得分:2)
出现此错误的原因是因为表达式的操作符和对象之间没有空格。
编译时编译器会断开这一行self.mapView.frame.size.height* -1
。它得到了什么
self.mapView.frame.size.height*
和-1
。所以编译器在这里误解为两个独立的参数。
self.mapView.frame.size.height
和*
之间的空格需要告诉编译器这是一个将self.mapView.frame.size.height
与-1
值相乘的表达式。
所以你的相关Swift代码如下:
func scrollViewDidScroll(scrollView: UIScrollView) {
if (scrollView.contentOffset.y < self.mapView.frame.size.height * -1 ) {
scrollView .setContentOffset(CGPointMake(scrollView.contentOffset.x, self.mapView.frame.size.height * -1), animated: true)
}
}
答案 1 :(得分:1)
self.mapView.frame.size.height * -1
这是一个乘法。