mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-23 17:48:34 +08:00
refactor(ios): minor update of UIManager and ShadowView
This commit is contained in:
@@ -198,16 +198,16 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
|
||||
NSHashTable<id<HippyComponent>> *_componentTransactionListeners;
|
||||
|
||||
std::mutex _renderQueueLock;
|
||||
NSMutableDictionary<NSString *, id> *_viewManagers;
|
||||
NSArray<Class> *_extraComponents;
|
||||
|
||||
NSMutableArray<Class<HippyImageProviderProtocol>> *_imageProviders;
|
||||
}
|
||||
|
||||
|
||||
/// All managed ViewManagers
|
||||
@property (atomic, strong) NSMutableDictionary<NSString *, id> *viewManagers;
|
||||
/// All extra components
|
||||
@property (atomic, strong) NSArray<Class> *extraComponents;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation HippyUIManager
|
||||
|
||||
@synthesize domManager = _domManager;
|
||||
@@ -668,36 +668,37 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
|
||||
|
||||
- (__kindof HippyViewManager *)viewManagerForViewName:(NSString *)viewName {
|
||||
HippyBridge *strongBridge = self.bridge;
|
||||
if (!_viewManagers) {
|
||||
_viewManagers = [NSMutableDictionary dictionary];
|
||||
if (_extraComponents) {
|
||||
for (Class cls in _extraComponents) {
|
||||
if (!self.viewManagers) {
|
||||
NSMutableDictionary *viewManagers = [NSMutableDictionary dictionary];
|
||||
if (self.extraComponents) {
|
||||
for (Class cls in self.extraComponents) {
|
||||
NSString *viewName = viewNameFromViewManagerClass(cls);
|
||||
HippyAssert(![_viewManagers objectForKey:viewName],
|
||||
HippyAssert(![viewManagers objectForKey:viewName],
|
||||
@"duplicated component %@ for class %@ and %@", viewName,
|
||||
NSStringFromClass(cls),
|
||||
NSStringFromClass([_viewManagers objectForKey:viewName]));
|
||||
[_viewManagers setObject:cls forKey:viewName];
|
||||
NSStringFromClass([viewManagers objectForKey:viewName]));
|
||||
[viewManagers setObject:cls forKey:viewName];
|
||||
}
|
||||
}
|
||||
NSArray<Class> *classes = HippyGetViewManagerClasses(strongBridge);
|
||||
NSMutableDictionary *defaultViewManagerClasses = [NSMutableDictionary dictionaryWithCapacity:[classes count]];
|
||||
for (Class cls in classes) {
|
||||
NSString *viewName = viewNameFromViewManagerClass(cls);
|
||||
if ([_viewManagers objectForKey:viewName]) {
|
||||
if ([viewManagers objectForKey:viewName]) {
|
||||
continue;
|
||||
}
|
||||
[defaultViewManagerClasses setObject:cls forKey:viewName];
|
||||
}
|
||||
[_viewManagers addEntriesFromDictionary:defaultViewManagerClasses];
|
||||
[viewManagers addEntriesFromDictionary:defaultViewManagerClasses];
|
||||
self.viewManagers = viewManagers;
|
||||
}
|
||||
// Get and instantiate the class
|
||||
id object = [_viewManagers objectForKey:viewName];
|
||||
id object = [self.viewManagers objectForKey:viewName];
|
||||
if (object_isClass(object)) {
|
||||
HippyViewManager *viewManager = [object new];
|
||||
viewManager.bridge = strongBridge;
|
||||
NSAssert([viewManager isKindOfClass:[HippyViewManager class]], @"Must be a HippyViewManager instance");
|
||||
[_viewManagers setObject:viewManager forKey:viewName];
|
||||
[self.viewManagers setObject:viewManager forKey:viewName];
|
||||
object = viewManager;
|
||||
}
|
||||
return object;
|
||||
@@ -1118,7 +1119,7 @@ NSString *const HippyUIManagerDidEndBatchNotification = @"HippyUIManagerDidEndBa
|
||||
}
|
||||
|
||||
- (void)registerExtraComponent:(NSArray<Class> *)extraComponents {
|
||||
_extraComponents = extraComponents;
|
||||
self.extraComponents = extraComponents;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ static NSString *const HippyBackgroundColorPropKey = @"backgroundColor";
|
||||
if ((self = [super init])) {
|
||||
_propagationLifecycle = NativeRenderUpdateLifecycleUninitialized;
|
||||
_frame = CGRectMake(0, 0, NAN, NAN);
|
||||
_objectSubviews = [NSMutableArray arrayWithCapacity:8];
|
||||
_objectSubviews = [NSMutableArray array];
|
||||
_confirmedLayoutDirection = hippy::Direction::Inherit;
|
||||
_layoutDirection = hippy::Direction::Inherit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user