更改UIView
的框架时,您有两种选择。第一种方法是将CGRect
作为参数传递给视图的setFrame
函数。另一种方法是将view.frame
设置为等于CGRect
。
1) [view setFrame:frame];
2) view.frame = frame;
使用setFrame
的{{1}}函数时,视图很容易检测到它应该更改其框架。但是,只需更改属性(UIView
),视图如何检测其帧已更改(因为视图的帧立即更新)?
答案 0 :(得分:4)
view.frame = frame
等于[view setFrame:frame]
。使用点方法设置属性与使用setXXX:XXX
相同。您可以在NSLog
中加setXXX:
,然后致电obj.XXX = XXX;
并检查控制台,看看是否已打印NSLog
。
示例: - 强>
view.frame = frame; //If you set frame like this then
-(void)setFrame:(CGRect)frame
{
//this will be call
}
答案 1 :(得分:4)
这就是Objective-C 2.0附带的点符号。它们主要用于获取和设置属性。
获取财产:view.frame
。设置属性:view.frame = frame
。
但它们只是另一种方式或更简单的方式(syntactic sugar)来写:[view frame]
和[view setFrame:frame]
。
他们就是这样,他们只是翻译成普通的Objective-C消息。事实上,因为它们只是翻译成消息,所以尝试类似:
view.setNeedsDisplay;
请注意,setNeedsDisplay
不是实际属性,但由于它已转换为[view setNeedsDisplay]
,因此它将起作用!按照惯例,点符号仅用于获取和设置属性,因此我不建议使用view.setNeedsDisplay
之类的内容。