如何在iOS上侦听视图的帧属性

如何在iOS上侦听视图的帧属性,ios,objective-c,Ios,Objective C,我有一个观点,我添加了这样一个观察者: 在observer方法中,我得到了新值: - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context { if ([keyPath isEqualToString:@"frame"]) { NS

我有一个观点,我添加了这样一个观察者:

在observer方法中,我得到了新值:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    if ([keyPath isEqualToString:@"frame"]) {
            NSLog(@"%@", change[@"new"]);
    }
  }
-(void)observeValueForKeyPath:(NSString*)对象的键路径:(id)对象更改:(NSDictionary*)更改上下文:(void*)上下文{
if([keyPath isEqualToString:@“frame”]){
NSLog(@“%@”,更改[@“新建”);
}
}
日志是
NSRect:{{100100},{100100}
。 问题是我得到的值类型是
NSRect
,如何将其转换为
CGRect


在UIKit库中,没有名为
NSRect

的类型通过以下方式将
NSRect
转换为
CGRect

CGRect NSRectToCGRect(NSRect nsrect);
注:以上仅适用于OSX

对于iOS
CGRect rect=[change[@“new”]CGRectValue]//复制自Rob的答案


阅读。

通过以下方式将
NSRect
转换为
CGRect

CGRect NSRectToCGRect(NSRect nsrect);
注:以上仅适用于OSX

对于iOS
CGRect rect=[change[@“new”]CGRectValue]//复制自Rob的答案


阅读。

NSRect
CGRect
在OS X上是相同的。您可以在OS X SDK中的
NSGeometry.h
中找到:

typedef CGRect NSRect;
在iOS上,
NSRect
不存在,但格式化功能在两种平台上都是相同的,它会打印
NSRect
。您可以获得如下所示的
CGRect
值:

CGRect rect = [change[@"new"] CGRectValue];

NSRect
CGRect
在OS X上是相同的。您可以在OS X SDK的
NSGeometry.h
中找到这一点:

typedef CGRect NSRect;
在iOS上,
NSRect
不存在,但格式化功能在两种平台上都是相同的,它会打印
NSRect
。您可以获得如下所示的
CGRect
值:

CGRect rect = [change[@"new"] CGRectValue];

谢谢你纠正我,我的答案不正确,但得到+1。我不知道IOS中缺少nsrecttogrect。感谢您的更正,我的答案不正确,但得到了+1。我不知道iOS中缺少nsrecttogrect