2017-08-01 64 views
0

我在iOS上創建本機UI組件,我希望它的大小根據內容大小進行擴展。 看來我必須設置一個固定的寬度和高度才能渲染視圖。任何想法如何解決它?React原生本機UI組件寬度和高度

// JS

import React from 'react'; 
import { View, requireNativeComponent } from 'react-native'; 

class StyledText extends React.Component { 
render() { 
    return (
     <View style={this.props.style}> 
// without the height and width the compnent won't show up 
      <StyledLabelReactBridge styledText={'some text'} style={{height: 100, width: 100, backgroundColor: 'red'}}/> 
     </View> 
    ); 
} 
} 

StyledText.propTypes = { 
styledText: React.PropTypes.string, 
style: View.propTypes.style 
}; 

const StyledLabelReactBridge = requireNativeComponent('StyledLabelReactBridge', StyledText); 

module.exports = StyledText; 

//目標-C

@implementation StyledLabelReactBridgeManager 

RCT_EXPORT_MODULE() 

- (UIView *)view 
{ 
return [[NewStyledLabel alloc] init]; 
} 

RCT_CUSTOM_VIEW_PROPERTY(styledText, NSString, NewStyledLabel) 
{ 
if (![json isKindOfClass:[NSString class]]) 
    return; 

[view setStyledText:[NewStyledText textFromXHTML:json]]; 
} 

@end 

回答

1

你需要覆蓋在Xcode reactSetFrame接收內容的大小變化。

#import "React/UIView+React.h" 

@implementation YourView { 
    - (void)reactSetFrame:(CGRect)frame { 
     [super reactSetFrame: frame]; 
     /* everytime content size changes, you will get its frame here. */ 
    } 
} 
+0

這救了我一命,應該是正確答案 – Porizm

-1

好了,找不到「自動」樣的行爲,該組件怎麼過的,設置爲:

{{ width: '100%', height: '100%}} 

使得它根據父,這是不夠好擴張(和收縮)爲我的用例。設置'flex:1'並不具有相同的效果令人遺憾。