diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
index a338847..7a7dc37 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
@@ -26,6 +26,13 @@
 #ifdef __cplusplus
 #include "layout.h"
 
+typedef WeexCore::WXCoreFlexDirection WXCoreFlexDirection;
+typedef WeexCore::WXCoreFlexWrap WXCoreFlexWrap;
+typedef WeexCore::WXCoreJustifyContent WXCoreJustifyContent;
+typedef WeexCore::WXCoreAlignItems WXCoreAlignItems;
+typedef WeexCore::WXCoreAlignSelf WXCoreAlignSelf;
+typedef WeexCore::WXCorePositionType WXCorePositionType;
+
 extern "C" {
 #endif
     bool flexIsUndefined(float value);
@@ -33,6 +40,19 @@
 }
 #endif
 
+#ifndef __cplusplus
+// Ensure that .m files can use css style enum definitions.
+#include "flex_enum.h"
+
+typedef enum WXCoreFlexDirection WXCoreFlexDirection;
+typedef enum WXCoreFlexWrap WXCoreFlexWrap;
+typedef enum WXCoreJustifyContent WXCoreJustifyContent;
+typedef enum WXCoreAlignItems WXCoreAlignItems;
+typedef enum WXCoreAlignSelf WXCoreAlignSelf;
+typedef enum WXCorePositionType WXCorePositionType;
+
+#endif
+
 @interface WXComponent ()
 {
     @package
@@ -51,10 +71,60 @@
  * @warning Subclasses must not override this.
  */
 #ifdef __cplusplus
-@property(nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
+@property (nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
 #endif
 
 /**
+ * @abstract Get css style value for key. The key should be of CSS standard form.
+ *  This method is for convenience use in C/ObjC environment. And if you want to
+ *  retrieve all style values or in C++, you could use flexCssNode directly.
+ *
+ *  Thread usage:
+ *      This method should be invoked in component thread by WXPerformBlockOnComponentThread.
+ *      Note that all initWithRef methods of WXComponent and its subclasses are performed in
+ *      component thread by default. Therefore you can call this method directly in initWithRef.
+ *
+ *  Supported keys:
+ *      width, height, min-width, min-height, max-width, max-height,
+ *      margin-(left/right/top/bottom)
+ *      padding-(left/right/top/bottom)
+ *      border-(left/right/top/bottom)-width
+ *      left, right, top, bottom
+ *      flex-grow
+ */
+- (float)getCssStyleValueForKey:(NSString *)key;
+
+/**
+ * @abstract Get css style flex-direction. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreFlexDirection)getCssStyleFlexDirection;
+
+/**
+ * @abstract Get css style flex-wrap. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreFlexWrap)getCssStyleFlexWrap;
+
+/**
+ * @abstract Get css style justify-content. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreJustifyContent)getCssStyleJustifyContent;
+
+/**
+ * @abstract Get css style align-items. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreAlignItems)getCssStyleAlignItems;
+
+/**
+ * @abstract Get css style align-self. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCoreAlignSelf)getCssStyleAlignSelf;
+
+/**
+ * @abstract Get css style position. Thread usage the same as getCssStyleValueForKey.
+ */
+- (WXCorePositionType)getCssStylePositionType;
+
+/**
  * @abstract Convert layout dimension value like 'left', 'width' to style value in js considering viewport and scale.
  */
 - (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName;
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
index 18cb24d..8afd225 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
@@ -366,6 +366,86 @@
     return defaultValue;
 }
 
+- (float)getCssStyleValueForKey:(NSString *)key
+{
+    /*
+     *      width, height, min-width, min-height, max-width, max-height,
+     *      margin-(left/right/top/bottom)
+     *      padding-(left/right/top/bottom)
+     *      border-(left/right/top/bottom)-width
+     *      left, right, top, bottom
+     *      flex-grow
+     */
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    if (_flexCssNode == nullptr) {
+        return NAN;
+    }
+    
+    std::string ckey = [key UTF8String];
+    if (ckey == "width") return _flexCssNode->getStyleWidth();
+    if (ckey == "height") return _flexCssNode->getStyleHeight();
+    if (ckey == "min-width") return _flexCssNode->getMinWidth();
+    if (ckey == "min-height") return _flexCssNode->getMinHeight();
+    if (ckey == "max-width") return _flexCssNode->getMaxWidth();
+    if (ckey == "max-height") return _flexCssNode->getMaxHeight();
+    if (ckey == "margin-left") return _flexCssNode->getMarginLeft();
+    if (ckey == "margin-right") return _flexCssNode->getMarginRight();
+    if (ckey == "margin-top") return _flexCssNode->getMarginTop();
+    if (ckey == "margin-bottom") return _flexCssNode->getMarginBottom();
+    if (ckey == "padding-left") return _flexCssNode->getPaddingLeft();
+    if (ckey == "padding-right") return _flexCssNode->getPaddingRight();
+    if (ckey == "padding-top") return _flexCssNode->getPaddingTop();
+    if (ckey == "padding-bottom") return _flexCssNode->getPaddingBottom();
+    if (ckey == "border-left-width") return _flexCssNode->getBorderWidthLeft();
+    if (ckey == "border-right-width") return _flexCssNode->getBorderWidthRight();
+    if (ckey == "border-top-width") return _flexCssNode->getBorderWidthTop();
+    if (ckey == "border-bottom-width") return _flexCssNode->getBorderWidthBottom();
+    if (ckey == "left") return _flexCssNode->getStylePositionLeft();
+    if (ckey == "right") return _flexCssNode->getStylePositionRight();
+    if (ckey == "top") return _flexCssNode->getStylePositionTop();
+    if (ckey == "bottom") return _flexCssNode->getStylePositionBottom();
+    if (ckey == "flex-grow") return _flexCssNode->getFlex();
+    
+    WXAssert(NO, @"Invalid css style key %@", key);
+    return NAN;
+}
+
+- (WXCoreFlexDirection)getCssStyleFlexDirection
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getFlexDirection() : kFlexDirectionColumn;
+}
+
+- (WXCoreFlexWrap)getCssStyleFlexWrap
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getFlexWrap() : kNoWrap;
+}
+
+- (WXCoreJustifyContent)getCssStyleJustifyContent
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getJustifyContent() : kJustifyFlexStart;
+}
+
+- (WXCoreAlignItems)getCssStyleAlignItems
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getAlignItems() : kAlignItemsStretch;
+}
+
+- (WXCoreAlignSelf)getCssStyleAlignSelf
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getAlignSelf() : kAlignSelfAuto;
+}
+
+- (WXCorePositionType)getCssStylePositionType
+{
+    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
+    return _flexCssNode ? _flexCssNode->getStylePositionType() : kRelative;
+}
+
 - (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName
 {
     if (_flexCssNode == nullptr) {
diff --git a/weex_core/Source/core/layout/flex_enum.h b/weex_core/Source/core/layout/flex_enum.h
index 9eb3676..7e439b2 100644
--- a/weex_core/Source/core/layout/flex_enum.h
+++ b/weex_core/Source/core/layout/flex_enum.h
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-#ifdef __cplusplus
 
 #ifndef WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
 #define WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
 
+/* These enum definitions may also be used by C files. */
+#ifdef __cplusplus
 namespace WeexCore {
+#endif
 
   /**
    * MainAxis direction
@@ -120,6 +122,8 @@
     kLeft,
   };
 
+#ifdef __cplusplus
 }
+#endif
+
 #endif //WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
-#endif
\ No newline at end of file
diff --git a/weex_core/Source/core/layout/layout.h b/weex_core/Source/core/layout/layout.h
index 0d62edd..4b8f0c5 100644
--- a/weex_core/Source/core/layout/layout.h
+++ b/weex_core/Source/core/layout/layout.h
@@ -836,7 +836,7 @@
       }
     }
 
-    inline WXCorePositionType getStypePositionType() const {
+    inline WXCorePositionType getStylePositionType() const {
       return mCssStyle->mPositionType;
     }
 
