_btn.frame.origin.y -= 10;
expression is not assignable
报错原因:OC语法规定:不允许直接修改某个对象的结构体属性的成员
_btn 是个对象
frame是个结构体。
对象和结构体是不一样的,结构体是C语言中的,里面可以定义许多属性,但是不能定义方法,而对象是即可以定义属性又可以定义方法的,是典型的面向对象语法。
如何改变对象中结构体属性的成员:
解决方法一:
// 既然不能直接修改对象中的结构体属性成员
// 先取出结构体
CGRect frame =_btn.frame;
// 修改结构体
frame.origin.y -=10;
// 将修改后的结构体重新赋值回去
_btn.frame = frame;
解决方法二:
// 先取出y值
CGFloat y =_btn.frame.origin.y;
// 修改y值
y -= 10;
// 重新设置_btn的y值,其他属性和_btn保持不变
_btn.frame =CGRectMake(_btn.frame.origin.x, y,_btn.frame.size.width,_btn.frame.size.height);