@Stephen
Nếu bạn không bận tâm về việc chiều cao hoạt ảnh với tỷ lệ chính xác như bàn phím xuất hiện, bạn chỉ có thể sử dụng LayoutAnimation, để ít nhất chiều cao không nhảy vào vị trí. ví dụ
nhập LayoutAnimation từ react-native và thêm các phương thức sau vào thành phần của bạn.
getInitialState: function() {
return {keyboardSpace: 0};
},
updateKeyboardSpace: function(frames) {
LayoutAnimation.configureNext(animations.layout.spring);
this.setState({keyboardSpace: frames.end.height});
},
resetKeyboardSpace: function() {
LayoutAnimation.configureNext(animations.layout.spring);
this.setState({keyboardSpace: 0});
},
componentDidMount: function() {
KeyboardEventEmitter.on(KeyboardEvents.KeyboardDidShowEvent, this.updateKeyboardSpace);
KeyboardEventEmitter.on(KeyboardEvents.KeyboardWillHideEvent, this.resetKeyboardSpace);
},
componentWillUnmount: function() {
KeyboardEventEmitter.off(KeyboardEvents.KeyboardDidShowEvent, this.updateKeyboardSpace);
KeyboardEventEmitter.off(KeyboardEvents.KeyboardWillHideEvent, this.resetKeyboardSpace);
},
Một số hoạt ảnh ví dụ là (tôi đang sử dụng hình ảnh mùa xuân ở trên):
var animations = {
layout: {
spring: {
duration: 400,
create: {
duration: 300,
type: LayoutAnimation.Types.easeInEaseOut,
property: LayoutAnimation.Properties.opacity,
},
update: {
type: LayoutAnimation.Types.spring,
springDamping: 400,
},
},
easeInEaseOut: {
duration: 400,
create: {
type: LayoutAnimation.Types.easeInEaseOut,
property: LayoutAnimation.Properties.scaleXY,
},
update: {
type: LayoutAnimation.Types.easeInEaseOut,
},
},
},
};
CẬP NHẬT:
Xem câu trả lời của @ sherlock bên dưới, kể từ react-native 0.11, việc thay đổi kích thước bàn phím có thể được giải quyết bằng cách sử dụng chức năng tích hợp sẵn.