如何增加选择器视图(转换的pickerview)宽度?

时间:2009-12-19 08:35:49

标签: iphone cocoa-touch xcode iphone-sdk-3.0

我正在尝试水平滚动选择器视图,这是我的代码。

在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这样的应用程序,其中选择器的宽度适合屏幕。 请帮我摆脱这个问题?

2 个答案:

答案 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,也许这可以提供帮助。

问候

亚历杭!!