我有一个包含pickerView和TextView的视图。
当我呈现我的视图时滚动越来越多。
在看了4-5次后,它卡住了越来越多,最后 UI 在滚动UIPickerView时完全冻结。 PickerView有4个组件,其中3个组件有大约50个值。
请查看下面的PickerView代码:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 4;
}
// The number of rows of data
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component
{
return [[_pickerData objectAtIndex:component] count];
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent: (NSInteger)component
{
switch (component){
case 0:
return 150.0;
case 1:
return 50.0f;
case 2:
return 20.0f;
case 3:
return 50.0f;
}
return 0;
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel* tView = (UILabel*)view;
if (!tView){
tView = [[UILabel alloc] init];
tView.font=[UIFont fontWithName:@"ArialNarrow" size:22];
tView.textAlignment=NSTextAlignmentCenter;
tView.text=_pickerData[component][row];
// Setup label properties - frame, font, colors etc
}
return tView;
}
请帮帮我。
答案 0 :(得分:0)
如果您只想在text
中显示pickerView
,那么我建议您使用此方法。
- (NSAttributedString*) pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSAttributedString *str = [[NSAttributedString alloc] initWithString:_pickerData[component][row] attributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"ArialNarrow" size: 22], NSFontAttributeName, nil]];
return str;
}
而不是使用
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
可能lable
多次分配。
希望对你有所帮助。
答案 1 :(得分:0)
感谢Garry的帮助。
我已经解决了这个问题。问题在于线程。每当应用程序冻结时,我都会通过暂停应用程序找到问题。在左侧,我们可以看到正在运行的线程。从那里我抓住了所谓的线程。令人不安的是主线程,这就是应用程序冻结的原因。