我正在iOS上创建一个原生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
4条答案
按热度按时间svgewumm1#
您需要覆盖xcode中的
reactSetFrame
以接收内容大小更改。oaxa6hgo2#
首先,您应该创建RCTShadowView子类,如
然后创建RCTViewManager子类,并返回自定义类示例的阴影视图和视图
在我代码中,我将自定义的原生UI视图委托给RCTViewManager的子类RNGuessLikeModule,当rn模块的数据通过时,您可以在自定义视图中计算大小
然后查找绑定到自定义ui视图的shadowview并更新intrinsicContentSize
最后调用[自身.桥接.uiManager设置需要布局]
可能对您有帮助
bnl4lu3b3#
wh6knrhe4#
嗯,找不到类似“auto”的行为,但是,将组件设置为:
使其根据父对象扩展(和收缩),这对于我的用例来说已经足够了。1'没有相同的效果。