У меня есть простой TextInput в моем собственном приложении. Вот соответствующий код:
<View style={styles.AmountWrapper}>
<TextInput
multiline={true}
placeholder="$0"
placeholderTextColor={colors.black38}
style={styles.NumberInput}
keyboardType={"numeric"}
/>
</View>
let styles = StyleSheet.create({
AmountWrapper: {
flexDirection: "column",
flex: 1,
alignItems: "center",
justifyContent: "center",
backgroundColor: colors.white
},
NumberInput: {
flexDirection: "row",
alignItems: "center",
flex: 0,
fontFamily: styleHelper.fontFamily("medium"),
fontSize: 48,
paddingHorizontal: 16,
paddingTop: 0,
paddingBottom: 0,
color: colors.blue,
textAlign: "center",
borderWidth: 0,
textAlignVertical: "center"
},
});
Я эмулирую как на Android Studio Pixel 3 с Android 9.0, так и на симуляторе Xcode, имитируя iOS 12.4 iPhone X.
На Android, это рендеринг именно так, как я хочу:
Проблема с iOS. Это отрисовывает текст слишком высоко, обрезая верхнюю часть знака доллара и несколько пикселей числа. Это происходит как с заполнителем, так и когда пользователь вводит текст:
Я попытался изменить поля, отступы, textAlign, lineHeight, flexDirection, выровняйте элементы и выровняйте содержание. Я также пробовал multiline={false}
в TextInput.
Как получить iOS рендеринг текста дальше вниз и правильное отображение в TextInput?