代码之家  ›  专栏  ›  技术社区  ›  Madhup Singh Yadav

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

  •  0
  • Madhup Singh Yadav  · 技术社区  · 15 年前

    我试图水平滚动选取器视图,这是我的代码。

         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 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    8 年前

    UIPickerView对高度变化非常敏感,因此直接更改其帧或对UIPickerView应用变换会导致渲染瑕疵。我所知道的调整UIPickerView大小的唯一可靠方法是将其放置在透明的UIView中,然后对该视图应用缩放(和旋转,在您的例子中)变换。

    this answer

        2
  •  0
  •   Alejandra    15 年前

    请尝试以下操作:

    使用“打开方式”选项打开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,也许这会有所帮助。

    亚历杭德拉!!