DCUniComponent.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. //
  2. // DCUniNativeComponent.h
  3. //
  4. // Created by DCloud on 2020/10/12.
  5. // Copyright © 2020 DCloud. All rights reserved.
  6. //
  7. #import "DCUniBasePlugin.h"
  8. NS_ASSUME_NONNULL_BEGIN
  9. @interface DCUniComponent : DCUniBaseCompenent
  10. /**
  11. *
  12. *
  13. * @param ref 组件的标识
  14. * @param type 组件的类型
  15. * @param styles 组件的样式
  16. * @param attributes 组件的属性
  17. * @param events 组件的事件
  18. * @param uniInstance 与组件关联的uniInstance
  19. *
  20. */
  21. -(void)onCreateComponentWithRef:(NSString *)ref type:(NSString *)type
  22. styles:(NSDictionary *)styles
  23. attributes:(NSDictionary *)attributes
  24. events:(NSArray *)events uniInstance:(DCUniSDKInstance *)uniInstance;
  25. /**
  26. * @abstract The component's supercomponent.
  27. */
  28. @property (nonatomic, readonly, weak, nullable) DCUniSDKInstance * uniInstance;
  29. /**
  30. * @abstract 该组件的子组件
  31. */
  32. @property (nonatomic, readonly, strong, nullable) NSArray<DCUniComponent *> * uniSubcomponents;
  33. /**
  34. * @abstract 该组件的父组件
  35. */
  36. @property (nonatomic, readonly, weak, nullable) DCUniComponent * uniSupercomponent;
  37. /**
  38. * @abstract 组件的视图
  39. */
  40. @property(nonatomic, readonly, strong) UIView *view;
  41. //View 层级相关
  42. /**
  43. * @abstract 从父视图中删除该组件的视图。
  44. *
  45. * @discussion 该方法在主线程上调用。
  46. */
  47. - (void)removeFromSuperview;
  48. // 生命周期 相关函数
  49. /**
  50. * @abstract 创建组件管理的视图
  51. *
  52. * @return 返回创建的视图
  53. *
  54. * @discussion 此方法加载或创建视图,并将其分配给view属性。 子类应在此处创建其自定义视图层次结构。不要直接调用该方法。
  55. *
  56. * @warning 对此方法的自定义实现 不要调用super
  57. */
  58. - (UIView *)loadView;
  59. /**
  60. * @abstract 返回一个布尔值,标识视图是否加载完毕。
  61. */
  62. - (BOOL)isViewLoaded;
  63. /**
  64. * @abstract 在加载组件视图之前调用
  65. *
  66. * @discussion 这是在-loadView之前。 该方法在主线程上调用。
  67. */
  68. - (void)viewWillLoad;
  69. /**
  70. * @abstract 在加载并设置组件的视图之后调用。
  71. *
  72. * @discussion 这是在-loadView之后。 这是执行额外初始化的最佳时间,例如向视图添加手势识别器。该方法在主线程上调用。
  73. */
  74. - (void)viewDidLoad;
  75. /**
  76. * @abstract 在释放组件的视图之前调用。方法在主线程上调用。
  77. */
  78. - (void)viewWillUnload;
  79. /**
  80. * @abstract 在释放组件的视图时调用。在主线程上调用该方法。
  81. */
  82. - (void)viewDidUnload;
  83. // 向JS发消息
  84. /**
  85. * @abstract 向JS 中的组件触发事件。
  86. *
  87. * @param eventName 要触发的事件的名称
  88. * @param params 要触发的参数
  89. **/
  90. - (void)fireEvent:(NSString *)eventName params:(nullable NSDictionary *)params;
  91. /**
  92. * @abstract 向组件触发事件,并告诉JS哪个值已更改。
  93. * 用于双向数据绑定。
  94. *
  95. * @param eventName 要触发的事件的名称
  96. * @param params 要触发的参数
  97. * @param domChanges 值已更改,用于双向数据绑定。
  98. **/
  99. - (void)fireEvent:(NSString *)eventName params:(nullable NSDictionary *)params domChanges:(nullable NSDictionary *)domChanges;
  100. // 样式相关函数
  101. /**
  102. * @abstract 组件样式更新时调用
  103. *
  104. * @param styles 更新的样式字典
  105. * @discussion 重写来处理特定的样式更新。 该方法在主线程上调用。
  106. **/
  107. - (void)updateStyles:(NSDictionary *)styles;
  108. /**
  109. * @abstract 重置组件样式时调用
  110. *
  111. * @param styles 重置样式的元素
  112. * @discussion 可以重写它来处理特定的样式重置。 该方法在主线程上调用。
  113. **/
  114. - (void)resetStyles:(NSArray *)styles;
  115. // 属性相关函数
  116. /**
  117. * @abstract 组件属性更新时调用
  118. *
  119. * @param attributes 更新的属性字典
  120. * @discussion 可以覆盖它以处理特定的属性更新。 该方法在主线程上调用。
  121. **/
  122. - (void)updateAttributes:(NSDictionary *)attributes;
  123. /**
  124. * @abstract 在向组件添加事件时调用
  125. *
  126. * @param eventName 添加的事件的名称
  127. * @discussion 可以覆盖它以处理特定事件的添加。 该方法在主线程上调用。
  128. **/
  129. - (void)addEvent:(NSString *)eventName;
  130. /**
  131. * @abstract 从组件中删除事件时调用
  132. *
  133. * @param eventName 删除的事件的名称
  134. * @discussion 可以重写它来处理特定的事件删除。 该方法在主线程上调用。
  135. **/
  136. - (void)removeEvent:(NSString *)eventName;
  137. @end
  138. NS_ASSUME_NONNULL_END