Commit f807257e authored by xwenliang's avatar xwenliang

new feature wheelFlex and fix #79

parent cf10cc34
......@@ -20,6 +20,7 @@
|pickerTitleColor | |array |[20, 20, 20, 1]) |
|pickerToolBarBg | |array |[232, 232, 232, 1] |
|pickerBg | |array |[196, 199, 206, 1] |
|wheelFlex | |array |[2, 1, 1] |
|pickerData | |array | |
|selectedValue | |array | |
|onPickerConfirm | |function| |
......
......@@ -29,14 +29,20 @@ import com.facebook.react.modules.core.DeviceEventManagerModule;
import java.util.ArrayList;
import static android.R.attr.textSize;
/**
* Author: heng <a href="https://github.com/shexiaoheng"/>
*
* <p>
* Created by heng on 16/9/5.
*
* <p>
* Edited by heng on 16/9/22.
* 1. PopupWindow height : full screen -> assignation
* 2. Added pickerToolBarHeight support
* 1. PopupWindow height : full screen -> assignation
* 2. Added pickerToolBarHeight support
*
* Edited by heng on 2016/10/19.
* 1. Added weights support
* 2. Fixed return data bug
*/
public class PickerViewModule extends ReactContextBaseJavaModule {
......@@ -45,14 +51,22 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
private static final String PICKER_DATA = "pickerData";
private static final String SELECTED_VALUE = "selectedValue";
private static final String IS_LOOP = "isLoop";
private static final String WEIGHTS = "wheelFlex";
private static final String PICKER_BG_COLOR = "pickerBg";
private static final String TEXT_BAR_COLOR = "pickerToolBarBg";
private static final String TEXT_BAR_HEIGHT = "pickerToolBarHeight";
private static final String CONFIRM_TEXT = "pickerConfirmBtnText";
private static final String CONFIRM_TEXT_COLOR = "pickerConfirmBtnColor";
private static final String CANCEL_TEXT = "pickerCancelBtnText";
private static final String CANCEL_TEXT_COLOR = "pickerCancelBtnColor";
private static final String TITLE_TEXT = "pickerTitleText";
private static final String TITLE_TEXT_COLOR = "pickerTitleColor";
......@@ -72,23 +86,17 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
private String cancelText;
private String titleText;
private double[] weights;
private int[] pickerColor = new int[4];
private int[] barBgColor = new int[4];
private int[] confirmTextColor = new int[4];
private int[] cancelTextColor = new int[4];
private int[] titleTextColor = new int[4];
private ArrayList<String> curSelectedList = new ArrayList<>();
private RelativeLayout barLayout;
private TextView cancelTV;
private TextView titleTV;
private TextView confirmTV;
private PickerViewLinkage pickerViewLinkage;
private PickerViewAlone pickerViewAlone;
private ArrayList<String> returnData;
private int pickerViewHeight;
private int barViewHeight;
private int curStatus;
public PickerViewModule(ReactApplicationContext reactContext) {
super(reactContext);
......@@ -104,13 +112,14 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
Activity activity = getCurrentActivity();
if (activity != null && options.hasKey(PICKER_DATA)) {
view = activity.getLayoutInflater().inflate(R.layout.popup_picker_view, null);
barLayout = (RelativeLayout) view.findViewById(R.id.barLayout);
cancelTV = (TextView) view.findViewById(R.id.cancel);
titleTV = (TextView) view.findViewById(R.id.title);
confirmTV = (TextView) view.findViewById(R.id.confirm);
pickerViewLinkage = (PickerViewLinkage) view.findViewById(R.id.pickerViewLinkage);
pickerViewAlone = (PickerViewAlone) view.findViewById(R.id.pickerViewAlone);
RelativeLayout barLayout = (RelativeLayout) view.findViewById(R.id.barLayout);
TextView cancelTV = (TextView) view.findViewById(R.id.cancel);
TextView titleTV = (TextView) view.findViewById(R.id.title);
TextView confirmTV = (TextView) view.findViewById(R.id.confirm);
final PickerViewLinkage pickerViewLinkage = (PickerViewLinkage) view.findViewById(R.id.pickerViewLinkage);
final PickerViewAlone pickerViewAlone = (PickerViewAlone) view.findViewById(R.id.pickerViewAlone);
int barViewHeight;
if (options.hasKey(TEXT_BAR_HEIGHT)) {
try {
barViewHeight = options.getInt(TEXT_BAR_HEIGHT);
......@@ -128,10 +137,17 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
if (options.hasKey(TEXT_BAR_COLOR)) {
ReadableArray array = options.getArray(TEXT_BAR_COLOR);
for (int i = 0; i < array.size(); i++) {
if (i == 3) {
barBgColor[i] = (int) (array.getDouble(i) * 255);
} else {
barBgColor[i] = array.getInt(i);
switch (i) {
case 0:
case 1:
case 2:
barBgColor[i] = array.getInt(i);
break;
case 3:
barBgColor[i] = (int) (array.getDouble(i) * 255);
break;
default:
break;
}
}
barLayout.setBackgroundColor(Color.argb(barBgColor[3], barBgColor[0], barBgColor[1], barBgColor[2]));
......@@ -146,10 +162,17 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
if (options.hasKey(CONFIRM_TEXT_COLOR)) {
ReadableArray array = options.getArray(CONFIRM_TEXT_COLOR);
for (int i = 0; i < array.size(); i++) {
if (i == 3) {
confirmTextColor[i] = (int) (array.getDouble(i) * 255);
} else {
confirmTextColor[i] = array.getInt(i);
switch (i) {
case 0:
case 1:
case 2:
confirmTextColor[i] = array.getInt(i);
break;
case 3:
confirmTextColor[i] = (int) (array.getDouble(i) * 255);
break;
default:
break;
}
}
confirmTV.setTextColor(Color.argb(confirmTextColor[3], confirmTextColor[0], confirmTextColor[1], confirmTextColor[2]));
......@@ -157,6 +180,14 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
confirmTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (curStatus){
case 0:
returnData = pickerViewAlone.getSelectedData();
break;
case 1:
returnData = pickerViewLinkage.getSelectedData();
break;
}
commonEvent(EVENT_KEY_CONFIRM);
hide();
}
......@@ -170,10 +201,17 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
if (options.hasKey(TITLE_TEXT_COLOR)) {
ReadableArray array = options.getArray(TITLE_TEXT_COLOR);
for (int i = 0; i < array.size(); i++) {
if (i == 3) {
titleTextColor[i] = (int) (array.getDouble(i) * 255);
} else {
titleTextColor[i] = array.getInt(i);
switch (i) {
case 0:
case 1:
case 2:
titleTextColor[i] = array.getInt(i);
break;
case 3:
titleTextColor[i] = (int) (array.getDouble(i) * 255);
break;
default:
break;
}
}
titleTV.setTextColor(Color.argb(titleTextColor[3], titleTextColor[0], titleTextColor[1], titleTextColor[2]));
......@@ -186,10 +224,17 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
if (options.hasKey(CANCEL_TEXT_COLOR)) {
ReadableArray array = options.getArray(CANCEL_TEXT_COLOR);
for (int i = 0; i < array.size(); i++) {
if (i == 3) {
cancelTextColor[i] = (int) (array.getDouble(i) * 255);
} else {
cancelTextColor[i] = array.getInt(i);
switch (i) {
case 0:
case 1:
case 2:
cancelTextColor[i] = array.getInt(i);
break;
case 3:
cancelTextColor[i] = (int) (array.getDouble(i) * 255);
break;
default:
break;
}
}
cancelTV.setTextColor(Color.argb(cancelTextColor[3], cancelTextColor[0], cancelTextColor[1], cancelTextColor[2]));
......@@ -197,6 +242,14 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
cancelTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (curStatus){
case 0:
returnData = pickerViewAlone.getSelectedData();
break;
case 1:
returnData = pickerViewLinkage.getSelectedData();
break;
}
commonEvent(EVENT_KEY_CANCEL);
hide();
}
......@@ -206,6 +259,32 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
isLoop = options.getBoolean(IS_LOOP);
}
if (options.hasKey(WEIGHTS)) {
ReadableArray array = options.getArray(WEIGHTS);
weights = new double[array.size()];
for (int i = 0; i < array.size(); i++) {
switch (array.getType(i).name()) {
case "Number":
try {
weights[i] = array.getInt(i);
} catch (Exception e) {
weights[i] = array.getDouble(i);
}
break;
case "String":
try {
weights[i] = Double.parseDouble(array.getString(i));
} catch (Exception e) {
weights[i] = 1.0;
}
break;
default:
weights[i] = 1.0;
break;
}
}
}
String[] selectValue = {};
if (options.hasKey(SELECTED_VALUE)) {
ReadableArray array = options.getArray(SELECTED_VALUE);
......@@ -234,22 +313,31 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
if (options.hasKey(PICKER_BG_COLOR)) {
ReadableArray array = options.getArray(PICKER_BG_COLOR);
for (int i = 0; i < array.size(); i++) {
if (i == 3) {
pickerColor[i] = (int) (array.getDouble(i) * 255);
} else {
pickerColor[i] = array.getInt(i);
switch (i) {
case 0:
case 1:
case 2:
pickerColor[i] = array.getInt(i);
break;
case 3:
pickerColor[i] = (int) (array.getDouble(i) * 255);
break;
default:
break;
}
}
}
ReadableArray pickerData = options.getArray(PICKER_DATA);
int pickerViewHeight;
String name = pickerData.getType(0).name();
switch (name) {
case "Map":
curStatus = 1;
pickerViewLinkage.setVisibility(View.VISIBLE);
pickerViewAlone.setVisibility(View.GONE);
pickerViewLinkage.setPickerData(pickerData, curSelectedList);
pickerViewLinkage.setPickerData(pickerData, weights);
pickerViewLinkage.setIsLoop(isLoop);
if (options.hasKey(PICKER_BG_COLOR)) {
pickerViewLinkage.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2]));
......@@ -257,18 +345,19 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
pickerViewLinkage.setOnSelectListener(new OnSelectedListener() {
@Override
public void onSelected(ArrayList<String> selectedList) {
curSelectedList = selectedList;
returnData = selectedList;
commonEvent(EVENT_KEY_SELECTED);
}
});
pickerViewLinkage.setSelectValue(selectValue, curSelectedList);
pickerViewLinkage.setSelectValue(selectValue);
pickerViewHeight = pickerViewLinkage.getViewHeight();
break;
default:
curStatus = 0;
pickerViewAlone.setVisibility(View.VISIBLE);
pickerViewLinkage.setVisibility(View.GONE);
pickerViewAlone.setPickerData(pickerData, curSelectedList);
pickerViewAlone.setPickerData(pickerData, weights);
pickerViewAlone.setIsLoop(isLoop);
if (options.hasKey(PICKER_BG_COLOR)) {
pickerViewAlone.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2]));
......@@ -277,25 +366,28 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
pickerViewAlone.setOnSelectedListener(new OnSelectedListener() {
@Override
public void onSelected(ArrayList<String> selectedList) {
curSelectedList = selectedList;
returnData = selectedList;
commonEvent(EVENT_KEY_SELECTED);
}
});
pickerViewAlone.setSelectValue(selectValue, curSelectedList);
pickerViewAlone.setSelectValue(selectValue);
pickerViewHeight = pickerViewAlone.getViewHeight();
break;
}
if (popupWindow == null) {
int height = barViewHeight + pickerViewHeight;
popupWindow = new PopupWindow(WindowManager.LayoutParams.MATCH_PARENT, height);
popupWindow.setBackgroundDrawable(new ColorDrawable());
popupWindow.setAnimationStyle(R.style.PopAnim);
popupWindow.setContentView(view);
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
} else {
popupWindow.dismiss();
popupWindow.setContentView(view);
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
}
popupWindow.setContentView(view);
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
}
}
......@@ -341,7 +433,7 @@ public class PickerViewModule extends ReactContextBaseJavaModule {
private void commonEvent(String eventKey) {
WritableMap map = Arguments.createMap();
WritableArray array = Arguments.createArray();
for (String item : curSelectedList) {
for (String item : returnData) {
array.pushString(item);
}
map.putArray(eventKey, array);
......
......@@ -14,7 +14,7 @@ import java.util.Arrays;
/**
* Created by heng on 16/9/6.
*
* <p>
* Edited by heng on 16/10/09:
* 修复滚动后返回值错误的bug
*/
......@@ -25,6 +25,8 @@ public class PickerViewAlone extends LinearLayout {
private OnSelectedListener onSelectedListener;
private ArrayList<String> curSelectedList;
public PickerViewAlone(Context context) {
super(context);
init(context);
......@@ -44,10 +46,11 @@ public class PickerViewAlone extends LinearLayout {
this.onSelectedListener = listener;
}
public void setPickerData(ReadableArray array, final ArrayList<String> curSelectedList) {
public void setPickerData(ReadableArray array, double[] weights) {
curSelectedList = new ArrayList<>();
switch (array.getType(0).name()) {
case "Array":
setMultipleData(array, curSelectedList);
setMultipleData(array, curSelectedList, weights);
break;
default:
setAloneData(array, curSelectedList);
......@@ -55,6 +58,10 @@ public class PickerViewAlone extends LinearLayout {
}
}
public ArrayList<String> getSelectedData(){
return this.curSelectedList;
}
private void setAloneData(ReadableArray array, final ArrayList<String> curSelectedList) {
ArrayList<String> values = arrayToList(array);
final LoopView loopView = new LoopView(getContext());
......@@ -81,7 +88,7 @@ public class PickerViewAlone extends LinearLayout {
pickerViewAloneLayout.addView(loopView);
}
private void setMultipleData(ReadableArray array, final ArrayList<String> curSelectedList) {
private void setMultipleData(ReadableArray array, final ArrayList<String> curSelectedList, double[] weights) {
final String[] selectedItems = new String[array.size()];
for (int i = 0; i < array.size(); i++) {
switch (array.getType(i).name()) {
......@@ -89,9 +96,16 @@ public class PickerViewAlone extends LinearLayout {
ReadableArray childArray = array.getArray(i);
ArrayList<String> values = arrayToList(childArray);
final LoopView loopView = new LoopView(getContext());
LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
LayoutParams params = new LayoutParams(0, LayoutParams.MATCH_PARENT);
if (weights != null) {
if (i < weights.length) {
params.weight = (float) weights[i];
} else {
params.weight = 1.0f;
}
} else {
params.weight = 1.0f;
}
loopView.setLayoutParams(params);
loopView.setItems(values);
loopView.setTag(i);
......@@ -130,7 +144,7 @@ public class PickerViewAlone extends LinearLayout {
}
}
public void setSelectValue(String[] selectValue, final ArrayList<String> curSelectedList) {
public void setSelectValue(String[] selectValue) {
int viewCount = pickerViewAloneLayout.getChildCount();
int valueCount = selectValue.length;
if (valueCount <= viewCount) {
......
......@@ -77,6 +77,8 @@ public class PickerViewLinkage extends LinearLayout {
private int selectOneIndex;
private int selectTwoIndex;
private ArrayList<String> curSelectedList;
private void checkItems(LoopView loopView, ArrayList<String> list) {
if (list != null && list.size() > 0) {
loopView.setItems(list);
......@@ -84,11 +86,57 @@ public class PickerViewLinkage extends LinearLayout {
}
}
private void setWeights(double[] weights) {
LayoutParams paramsOne = new LayoutParams(0, LayoutParams.MATCH_PARENT);
LayoutParams paramsTwo = new LayoutParams(0, LayoutParams.MATCH_PARENT);
LayoutParams paramsThree = new LayoutParams(0, LayoutParams.MATCH_PARENT);
switch (curRow) {
case 2:
switch (weights.length) {
case 1:
paramsOne.weight = (float) weights[0];
paramsTwo.weight = 1.0f;
break;
default:
paramsOne.weight = (float) weights[0];
paramsTwo.weight = (float) weights[1];
break;
}
loopViewOne.setLayoutParams(paramsOne);
loopViewTwo.setLayoutParams(paramsTwo);
break;
case 3:
switch (weights.length) {
case 1:
paramsOne.weight = (float) weights[0];
paramsTwo.weight = 1.0f;
paramsThree.weight = 1.0f;
break;
case 2:
paramsOne.weight = (float) weights[0];
paramsTwo.weight = (float) weights[1];
paramsThree.weight = 1.0f;
break;
default:
paramsOne.weight = (float) weights[0];
paramsTwo.weight = (float) weights[1];
paramsThree.weight = (float) weights[2];
break;
}
loopViewOne.setLayoutParams(paramsOne);
loopViewTwo.setLayoutParams(paramsTwo);
loopViewThree.setLayoutParams(paramsThree);
break;
}
}
/**
* ReadableArray getMap will remove the item.
* <a href="https://github.com/facebook/react-native/issues/8557"></a>
* */
public void setPickerData(ReadableArray array, final ArrayList<String> curSelectedList) {
* ReadableArray getMap will remove the item.
* <a href="https://github.com/facebook/react-native/issues/8557"></a>
*/
public void setPickerData(ReadableArray array, double[] weights) {
curSelectedList = new ArrayList<>();
oneList.clear();
for (int i = 0; i < array.size(); i++) {
ReadableMap map = array.getMap(i);
......@@ -235,6 +283,9 @@ public class PickerViewLinkage extends LinearLayout {
}
});
}
if (weights != null) {
setWeights(weights);
}
}
private ArrayList<String> arrayToList(ReadableArray array) {
......@@ -265,7 +316,7 @@ public class PickerViewLinkage extends LinearLayout {
}
}
public void setSelectValue(String[] selectValue, final ArrayList<String> curSelectedList) {
public void setSelectValue(String[] selectValue) {
if (curRow <= selectValue.length) {
String[] values = Arrays.copyOf(selectValue, curRow);
selectValues(values, curSelectedList);
......@@ -275,7 +326,6 @@ public class PickerViewLinkage extends LinearLayout {
selectOneLoop(selectValue, curSelectedList);
switch (curRow) {
case 3:
twoList.clear();
getTwoListData();
loopViewTwo.setItems(twoList);
......@@ -305,7 +355,7 @@ public class PickerViewLinkage extends LinearLayout {
twoList.clear();
getTwoListData();
selectTwoLoop(selectValue,curSelectedList);
selectTwoLoop(selectValue, curSelectedList);
threeList.clear();
......@@ -419,9 +469,8 @@ public class PickerViewLinkage extends LinearLayout {
/**
* 获取第三个滚轮的值
* */
private void getThreeListData(){
//{ NativeMap: {"b":[{"b1":[11,22,33,44]},{"b2":[55,66,77,88]},{"b3":[99,1010,1111,1212]}]} }
*/
private void getThreeListData() {
ReadableMap childMap = data.get(selectOneIndex).getArray(oneList.get(selectOneIndex)).getMap(selectTwoIndex);
String key = childMap.keySetIterator().nextKey();
ReadableArray sunArray = childMap.getArray(key);
......@@ -446,10 +495,14 @@ public class PickerViewLinkage extends LinearLayout {
}
}
public int getViewHeight (){
public int getViewHeight() {
return loopViewOne.getViewHeight();
}
public ArrayList<String> getSelectedData(){
return this.curSelectedList;
}
public void setOnSelectListener(OnSelectedListener listener) {
this.onSelectedListener = listener;
}
......
......@@ -59,6 +59,8 @@ typedef void(^backBolock)(NSDictionary * );
@property(strong,nonatomic)NSArray *selectValueArry;
@property(strong,nonatomic)NSArray *weightArry;
//创建一个下角标记录是第几行 来一进来判断第一行被选中 当进来的是关联两行的逻辑的时候 或者三行关联的时候取第二行做记录
@property(assign,nonatomic)NSInteger num;
......@@ -69,7 +71,7 @@ typedef void(^backBolock)(NSDictionary * );
-(instancetype)initWithFrame:(CGRect)frame dic:(NSDictionary *)dic leftStr:(NSString *)leftStr centerStr:(NSString *)centerStr rightStr:(NSString *)rightStr topbgColor:(NSArray *)topbgColor bottombgColor:(NSArray *)bottombgColor leftbtnbgColor:(NSArray *)leftbtnbgColor rightbtnbgColor:(NSArray *)rightbtnbgColor centerbtnColor:(NSArray *)centerbtnColor selectValueArry:(NSArray *)selectValueArry;
-(instancetype)initWithFrame:(CGRect)frame dic:(NSDictionary *)dic leftStr:(NSString *)leftStr centerStr:(NSString *)centerStr rightStr:(NSString *)rightStr topbgColor:(NSArray *)topbgColor bottombgColor:(NSArray *)bottombgColor leftbtnbgColor:(NSArray *)leftbtnbgColor rightbtnbgColor:(NSArray *)rightbtnbgColor centerbtnColor:(NSArray *)centerbtnColor selectValueArry:(NSArray *)selectValueArry weightArry:(NSArray *)weightArry;
@end
......@@ -10,7 +10,7 @@
@implementation BzwPicker
-(instancetype)initWithFrame:(CGRect)frame dic:(NSDictionary *)dic leftStr:(NSString *)leftStr centerStr:(NSString *)centerStr rightStr:(NSString *)rightStr topbgColor:(NSArray *)topbgColor bottombgColor:(NSArray *)bottombgColor leftbtnbgColor:(NSArray *)leftbtnbgColor rightbtnbgColor:(NSArray *)rightbtnbgColor centerbtnColor:(NSArray *)centerbtnColor selectValueArry:(NSArray *)selectValueArry
-(instancetype)initWithFrame:(CGRect)frame dic:(NSDictionary *)dic leftStr:(NSString *)leftStr centerStr:(NSString *)centerStr rightStr:(NSString *)rightStr topbgColor:(NSArray *)topbgColor bottombgColor:(NSArray *)bottombgColor leftbtnbgColor:(NSArray *)leftbtnbgColor rightbtnbgColor:(NSArray *)rightbtnbgColor centerbtnColor:(NSArray *)centerbtnColor selectValueArry:(NSArray *)selectValueArry weightArry:(NSArray *)weightArry
{
self = [super initWithFrame:frame];
if (self)
......@@ -19,6 +19,7 @@
self.provinceArray=[[NSMutableArray alloc]init];
self.cityArray=[[NSMutableArray alloc]init];
self.selectValueArry=selectValueArry;
self.weightArry=weightArry;
self.pickerDic=dic;
self.leftStr=leftStr;
self.rightStr=rightStr;
......@@ -186,18 +187,115 @@
if (_Correlation) {
if ([_numberCorrela isEqualToString:@"three"]) {
return SCREEN_WIDTH/3;
if (self.weightArry.count>=3) {
NSString *onestr=[NSString stringWithFormat:@"%@",[self.weightArry firstObject]];
NSString *twostr=[NSString stringWithFormat:@"%@",self.weightArry[1]];
NSString *threestr=[NSString stringWithFormat:@"%@",self.weightArry[2]];
double totalweight=onestr.doubleValue+twostr.doubleValue+threestr.doubleValue;
if (component==0) {
return SCREEN_WIDTH*onestr.doubleValue/totalweight;
}else if (component==1){
return SCREEN_WIDTH*twostr.doubleValue/totalweight;
}else{
return SCREEN_WIDTH*threestr.doubleValue/totalweight;
}
}else{
if (self.weightArry.count>0) {
NSInteger totalNum=self.weightArry.count;
double totalweight=0;
for (NSInteger i=0; i<self.weightArry.count; i++) {
NSString *str=[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:i]];
totalweight=totalweight+str.doubleValue;
}
if (component>totalNum-1) {
NSString *str=[NSString stringWithFormat:@"%f",totalweight+3-totalNum];
return SCREEN_WIDTH/str.doubleValue;;
}else{
NSString *str=[NSString stringWithFormat:@"%f",totalweight+3-totalNum];
return SCREEN_WIDTH*[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:component]].doubleValue/str.doubleValue;
}
}else{
return SCREEN_WIDTH/3;
}
}
}else{
return SCREEN_WIDTH/2;
if (self.weightArry.count>=2) {
NSString *onestr=[NSString stringWithFormat:@"%@",[self.weightArry firstObject]];
NSString *twostr=[NSString stringWithFormat:@"%@",self.weightArry[1]];
double totalweight=onestr.doubleValue+twostr.doubleValue;
if (component==0) {
return SCREEN_WIDTH*onestr.doubleValue/totalweight;
}else{
return SCREEN_WIDTH*twostr.doubleValue/totalweight;
}
}else{
if (self.weightArry.count>0) {
double twonum=[NSString stringWithFormat:@"%@",[self.weightArry firstObject]].doubleValue;
if (component==0) {
NSString *str=[NSString stringWithFormat:@"%f",twonum+1];
return SCREEN_WIDTH*twonum/str.doubleValue;
}else{
NSString *str=[NSString stringWithFormat:@"%f",twonum+1];
return SCREEN_WIDTH/str.doubleValue;
}
}else
{
return SCREEN_WIDTH/2;
}
}
}
}else{
if (_noArryElementBool) {
//表示一个数组 特殊情况
return SCREEN_WIDTH;
}else{
return SCREEN_WIDTH/self.dataDry.count;
if (self.weightArry.count>=self.dataDry.count) {
double totalweight=0;
for (NSInteger i=0; i<self.dataDry.count; i++) {
NSString *str=[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:i]];
totalweight=totalweight+str.doubleValue;
}
NSString *comStr=[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:component]];
return SCREEN_WIDTH*comStr.doubleValue/totalweight;
}else
{
if (self.weightArry.count>0) {
NSInteger totalNum=self.weightArry.count;
double totalweight=0;
for (NSInteger i=0; i<self.weightArry.count; i++) {
NSString *str=[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:i]];
totalweight=totalweight+str.doubleValue;
}
if (component>totalNum-1) {
NSString *str=[NSString stringWithFormat:@"%f",totalweight+self.dataDry.count-totalNum];
return SCREEN_WIDTH/str.doubleValue;
}else{
NSString *str=[NSString stringWithFormat:@"%f",totalweight+self.dataDry.count-totalNum];
return SCREEN_WIDTH*[NSString stringWithFormat:@"%@",[self.weightArry objectAtIndex:component]].doubleValue/str.doubleValue;
}
}else{
return SCREEN_WIDTH/self.dataDry.count;
}
}
}
}
}
......
......@@ -60,6 +60,7 @@ RCT_EXPORT_METHOD(_init:(NSDictionary *)indic){
NSArray *pickerToolBarBg=indic[@"pickerToolBarBg"];
NSArray *pickerBg=indic[@"pickerBg"];
NSArray *selectArry=indic[@"selectedValue"];
NSArray *weightArry=indic[@"wheelFlex"];
id pickerData=indic[@"pickerData"];
......@@ -78,7 +79,7 @@ RCT_EXPORT_METHOD(_init:(NSDictionary *)indic){
}];
self.pick=[[BzwPicker alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, 250) dic:dataDic leftStr:pickerCancelBtnText centerStr:pickerTitleText rightStr:pickerConfirmBtnText topbgColor:pickerToolBarBg bottombgColor:pickerBg leftbtnbgColor:pickerCancelBtnColor rightbtnbgColor:pickerConfirmBtnColor centerbtnColor:pickerTitleColor selectValueArry:selectArry];
self.pick=[[BzwPicker alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, 250) dic:dataDic leftStr:pickerCancelBtnText centerStr:pickerTitleText rightStr:pickerConfirmBtnText topbgColor:pickerToolBarBg bottombgColor:pickerBg leftbtnbgColor:pickerCancelBtnColor rightbtnbgColor:pickerConfirmBtnColor centerbtnColor:pickerTitleColor selectValueArry:selectArry weightArry:weightArry];
_pick.bolock=^(NSDictionary *backinfoArry){
......
{
"name": "react-native-picker",
"version": "4.0.5",
"version": "4.0.6",
"description": "",
"main": "index.js",
"scripts": {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment