Ios 当更改方向时,帧反应SetFrame:(CGRect)帧未更改

Ios 当更改方向时,帧反应SetFrame:(CGRect)帧未更改,ios,react-native,Ios,React Native,我有一个自定义的本机UI组件,我正在使用(void)reactSetFrame:(CGRect)frame(UIView+React.h中的方法),当方向改变时,调用此方法,但使用旧框架时,框架没有改变 我的用法: - (void)reactSetFrame:(CGRect)frame { [super reactSetFrame:frame]; ... } 我相信你可以利用这个:) 调用self.setNeedsDisplay时会调用Draw rect,您可以覆盖traitC

我有一个自定义的本机UI组件,我正在使用
(void)reactSetFrame:(CGRect)frame
(UIView+React.h中的方法),当方向改变时,调用此方法,但使用旧框架时,框架没有改变

我的用法:

- (void)reactSetFrame:(CGRect)frame {
    [super reactSetFrame:frame];
    ...
}

我相信你可以利用这个:)

调用self.setNeedsDisplay时会调用Draw rect,您可以覆盖
traitCollectionDidChange
捕获它并强制视图自身布局:)

编辑

刚刚意识到你正在使用Objective-c

- (void)drawRect:(CGRect)rect {
    NSLog(@"%@",NSStringFromCGSize(rect.size));
}

-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    [self setNeedsDisplay];
}

谢谢,但框架仍然没有更改:/@gran33:您确定您的视图框架正在更改吗????如果您的帧发生更改,则只有您才能在drawRect中获得更改的帧值,或者您可以在那里手动修改它:)例如,如果您有一个带有autolayoutConstraint的视图,将其固定到viewCotroller的四个边,您将看到drawRect始终使用更新的帧进行调用:)我是否缺少某些内容可能
flex
不支持这?@gran33:ohhhh从未使用过flex buddy:|不知道它肯定可以使用普通的UIView组件:)在我的tableView CollectionView上试用过。不过我使用的是
react native
,而不仅仅是本机应用程序
- (void)drawRect:(CGRect)rect {
    NSLog(@"%@",NSStringFromCGSize(rect.size));
}

-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    [self setNeedsDisplay];
}