在oc中当我们直接对self.view.frame.size.height = 100;进行赋值时,便会出现这个错误,这个错误的原因是在于:
self.view.frame是Objective-C语法的点语法,而frame属性是一个cgrect结构,frame.size.height是c语言的语法,由于oc只是c语言的扩展,因此上面这句话转化为c语言的形式调转就会变为:getframe().size.height = 100f; 在c语言中,函数的返回值是一个R-Value,是不能给他直接赋值的(所谓的R-Value,就是只能出现在等号的右边,你可以理解成是一个常量;而可以被赋值的是L-Value,可以出现在等号的左边,通常是变量)。因此你直接给它赋值时,便会出现这个错误。解决办法是给这个函数加一个零时变量,修改零时变量,然后再赋值给frame。就可以实现修改frame内height和width的值。例子:
// 1. 用一个临时变量保存返回值。 CGRect temp = self.view.frame; // 2. 给这个变量赋值。因为变量都是L-Value,可以被赋值 temp.size.height = 100f; // 3. 修改frame的值 self.view.frame = temp;
时间: 2024-11-05 19:26:00