我正在尝试水平滚动选择器视图,这是我的代码。
在viewDidLoad中我这样做了,
CGRect frame = horizontalPickerView.frame;
frame.size.width = 50;
frame.size.height = 216;
frame.origin.x=90;
frame.origin.y = 200;
horizontalPickerView.frame = frame;
horizontalPickerView.transform = CGAffineTransformMakeRotation(3.14159/2);
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel *lbl = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 30, 20)] autorelease];
lbl.transform = CGAffineTransformMakeRotation(-3.14159/2);
lbl.text = @"hi";
return lbl;
}
但问题是,如果我尝试这样做,我将无法将选择器视图的宽度更改为216.0以上,并留下黑色背景。
CorrectImage http://img709.imageshack.us/img709/6982/picture5g.png这是正确的图片
现在,如果我这样做
CGRect frame = horizontalPickerView.frame;
frame.size.width = 50;
frame.size.height = 300;
frame.origin.x=120;
frame.origin.y = 200;
horizontalPickerView.frame = frame;
horizontalPickerView.transform = CGAffineTransformMakeRotation(3.14159/2);
我得到了这个image http://img46.imageshack.us/img46/2792/picture6b.png
我见过像Seelibrity这样的应用程序,其中选择器的宽度适合屏幕。 请帮我摆脱这个问题?
答案 0 :(得分:2)
UIPickerView对高度变化非常敏感,因此直接更改其框架或将变换应用于UIPickerView会导致渲染工件。我知道用于调整UIPickerView大小的唯一可靠方法是将其放在透明的UIView中,然后将缩放(和旋转,在您的情况下)转换为该持有者视图。
我在this answer中提供了此示例。
答案 1 :(得分:0)
尝试以下方法:
使用“打开为”选项打开您的xib文件 - > “痛苦文本文件”
搜索选择器视图对象:
<object class="IBUIPickerView" id="648806599">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{0, 83}, {100, 50}}</string> ---> here
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<bool key="IBUIShowsSelectionIndicator">YES</bool>
</object>
更改NSframe,也许这可以提供帮助。
问候
亚历杭!!