From 6aaa4b2353fcaf6d1e66169196e57e0361fef878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=A8=E7=87=95?= Date: Thu, 13 Dec 2018 11:20:58 +0800 Subject: [PATCH] [iOS] [Bugfix] fix view.frame is not accessed in main thread. --- .../Sources/Manager/WXComponentManager.mm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.mm b/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.mm index f668550ffb..b800a6ea8c 100644 --- a/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.mm +++ b/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.mm @@ -724,16 +724,15 @@ - (void)layoutComponent:(WXComponent*)component frame:(CGRect)frame isRTL:(BOOL) [component _setIsLayoutRTL:isRTL]; if (component == _rootComponent) { - if (!CGSizeEqualToSize(frame.size, self.weexInstance.frame.size) || !CGSizeEqualToSize(frame.size, self.weexInstance.rootView.frame.size)) { - // Synchronize view frame with root component, especially for content wrap mode. - WXPerformBlockOnMainThread(^{ - if (!self.weexInstance.isRootViewFrozen) { - CGRect rect = self.weexInstance.rootView.frame; // no change of origin - rect.size = frame.size; - self.weexInstance.rootView.frame = rect; - } - }); - } + // Synchronize view frame with root component, especially for content wrap mode. + WXPerformBlockOnMainThread(^{ + if (!self.weexInstance.isRootViewFrozen && + (!CGSizeEqualToSize(frame.size, self.weexInstance.frame.size) || !CGSizeEqualToSize(frame.size, self.weexInstance.rootView.frame.size))) { + CGRect rect = self.weexInstance.rootView.frame; // no change of origin + rect.size = frame.size; + self.weexInstance.rootView.frame = rect; + } + }); } if ([component _isCalculatedFrameChanged:frame]) {