0

更改 a 的框架时UIView,您有两个选择。第一种是将 aCGRect作为参数传递setFrame给视图的函数。另一种是设置view.frame等于CGRect

1) [view setFrame:frame];
2) view.frame = frame;

当使用setFramea 的功能时UIView,视图很容易检测到它应该改变它的框架。但是,当简单地更改属性 ( view.frame) 时,视图如何检测到其框架已更改(因为视图的框架会立即更新)?

4

2 回答 2

4

view.frame = frame等于[view setFrame:frame]。使用 dot 方法设置属性与使用setXXX:XXX. 您可以将 aNSLog放入setXXX:,然后调用obj.XXX = XXX;并检查控制台以查看是否NSLog已打印。

例子:-

view.frame = frame; //If you set frame like this then

-(void)setFrame:(CGRect)frame
{
    //this will be call
}
于 2013-03-25T03:56:00.660 回答
4

这就是 Objective-C 2.0 附带的点符号。它们主要用于获取和设置属性。

获取属性:view.frame. 设置一个属性:view.frame = frame

但它们只是另一种方式或更简单的方式(语法糖)来编写:[view frame][view setFrame:frame]

这就是它们的全部内容,它们只是被翻译成简单的旧 Objective-C 消息。事实上,由于它们只是被翻译成消息,请尝试以下操作:

view.setNeedsDisplay;

请注意,这setNeedsDisplay不是实际财产,但由于它已翻译为[view setNeedsDisplay],因此可以使用!按照惯例,点表示法仅用于获取和设置属性,所以我不建议使用类似view.setNeedsDisplay.

于 2013-03-25T04:14:55.537 回答