From a589985b0b417df9a01d5cbdf26b1dc30ca44d53 Mon Sep 17 00:00:00 2001 From: Redmar Kerkhoff Date: Mon, 27 Jun 2016 17:10:50 -0700 Subject: [PATCH] Fixes ActivityIndicatorIOS doesn't hide initially Summary: I used the reproducible steps as described in origin bug ticket #7987 as test plan. This has the same contents as PR #8130 but then against master per janicduplessis request. Closes https://github.com/facebook/react-native/pull/8134 Differential Revision: D3491126 fbshipit-source-id: a22669dc998f82b36fbe31d882d0a29f0912e2ee --- React/React.xcodeproj/project.pbxproj | 6 +++++ React/Views/RCTActivityIndicatorView.h | 13 ++++++++++ React/Views/RCTActivityIndicatorView.m | 24 +++++++++++++++++++ React/Views/RCTActivityIndicatorViewManager.m | 4 ++-- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 React/Views/RCTActivityIndicatorView.h create mode 100644 React/Views/RCTActivityIndicatorView.m diff --git a/React/React.xcodeproj/project.pbxproj b/React/React.xcodeproj/project.pbxproj index 4b2ebbade..08c7d0ef7 100644 --- a/React/React.xcodeproj/project.pbxproj +++ b/React/React.xcodeproj/project.pbxproj @@ -96,6 +96,7 @@ 83CBBA981A6020BB00E9B192 /* RCTTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CBBA971A6020BB00E9B192 /* RCTTouchHandler.m */; }; 83CBBACC1A6023D300E9B192 /* RCTConvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CBBACB1A6023D300E9B192 /* RCTConvert.m */; }; 85C199EE1CD2407900DAD810 /* RCTJSCWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 85C199ED1CD2407900DAD810 /* RCTJSCWrapper.mm */; }; + B95154321D1B34B200FE7B80 /* RCTActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = B95154311D1B34B200FE7B80 /* RCTActivityIndicatorView.m */; }; E9B20B7B1B500126007A2DA7 /* RCTAccessibilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9B20B7A1B500126007A2DA7 /* RCTAccessibilityManager.m */; }; /* End PBXBuildFile section */ @@ -309,6 +310,8 @@ 85C199EC1CD2407900DAD810 /* RCTJSCWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTJSCWrapper.h; sourceTree = ""; }; 85C199ED1CD2407900DAD810 /* RCTJSCWrapper.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = RCTJSCWrapper.mm; sourceTree = ""; }; ACDD3FDA1BC7430D00E7DE33 /* RCTBorderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTBorderStyle.h; sourceTree = ""; }; + B95154301D1B34B200FE7B80 /* RCTActivityIndicatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorView.h; sourceTree = ""; }; + B95154311D1B34B200FE7B80 /* RCTActivityIndicatorView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorView.m; sourceTree = ""; }; E3BBC8EB1ADE6F47001BBD81 /* RCTTextDecorationLineType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTTextDecorationLineType.h; sourceTree = ""; }; E9B20B791B500126007A2DA7 /* RCTAccessibilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTAccessibilityManager.h; sourceTree = ""; }; E9B20B7A1B500126007A2DA7 /* RCTAccessibilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTAccessibilityManager.m; sourceTree = ""; }; @@ -387,6 +390,8 @@ 13B07FF31A6947C200A75B9A /* Views */ = { isa = PBXGroup; children = ( + B95154301D1B34B200FE7B80 /* RCTActivityIndicatorView.h */, + B95154311D1B34B200FE7B80 /* RCTActivityIndicatorView.m */, 13B080181A69489C00A75B9A /* RCTActivityIndicatorViewManager.h */, 13B080191A69489C00A75B9A /* RCTActivityIndicatorViewManager.m */, 13442BF21AA90E0B0037E5B0 /* RCTAnimationType.h */, @@ -762,6 +767,7 @@ 58114A171AAE854800E7D092 /* RCTPickerManager.m in Sources */, 191E3EBE1C29D9AF00C180A6 /* RCTRefreshControlManager.m in Sources */, 68EFE4EE1CF6EB3900A1DE13 /* RCTBundleURLProvider.m in Sources */, + B95154321D1B34B200FE7B80 /* RCTActivityIndicatorView.m in Sources */, 13B0801A1A69489C00A75B9A /* RCTNavigator.m in Sources */, 137327E71AA5CF210034F82E /* RCTTabBar.m in Sources */, 13F17A851B8493E5007D4C75 /* RCTRedBox.m in Sources */, diff --git a/React/Views/RCTActivityIndicatorView.h b/React/Views/RCTActivityIndicatorView.h new file mode 100644 index 000000000..ae802a448 --- /dev/null +++ b/React/Views/RCTActivityIndicatorView.h @@ -0,0 +1,13 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface RCTActivityIndicatorView : UIActivityIndicatorView +@end diff --git a/React/Views/RCTActivityIndicatorView.m b/React/Views/RCTActivityIndicatorView.m new file mode 100644 index 000000000..29ce6dbc3 --- /dev/null +++ b/React/Views/RCTActivityIndicatorView.m @@ -0,0 +1,24 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "RCTActivityIndicatorView.h" + +@implementation RCTActivityIndicatorView { +} + +- (void)setHidden:(BOOL)hidden +{ + if ([self hidesWhenStopped] && ![self isAnimating]) { + [super setHidden: YES]; + } else { + [super setHidden: hidden]; + } +} + +@end diff --git a/React/Views/RCTActivityIndicatorViewManager.m b/React/Views/RCTActivityIndicatorViewManager.m index 2a7cadf35..63e227f27 100644 --- a/React/Views/RCTActivityIndicatorViewManager.m +++ b/React/Views/RCTActivityIndicatorViewManager.m @@ -8,7 +8,7 @@ */ #import "RCTActivityIndicatorViewManager.h" - +#import "RCTActivityIndicatorView.h" #import "RCTConvert.h" @implementation RCTConvert (UIActivityIndicatorView) @@ -29,7 +29,7 @@ RCT_EXPORT_MODULE() - (UIView *)view { - return [UIActivityIndicatorView new]; + return [RCTActivityIndicatorView new]; } RCT_EXPORT_VIEW_PROPERTY(color, UIColor)