UIPickerView自定义背景

#import <UIKit/UIKit.h>


@interface MyPicker : UIPickerView {

}

@end

--------------------------------------------------------------------------------

//
//  MyPicker.m
//  PickerSkinTest
//
//  Created by Wang WenHui on 10-5-3.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//

#import "MyPicker.h"
#import "Function.h"


@implementation MyPicker


- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
        
    }
    return self;
}


- (void)drawRect:(CGRect)rect {
    
    //改变最外层的背景
    UIView *v0 = [[self subviews] objectAtIndex:0 ];
    v0.backgroundColor = [Function colorWithHexString:@"#f5f5f5"];
    
    //去掉最大的框
    UIView *v8 = [[self subviews] objectAtIndex:8];
    v8.alpha = 0.0;
    
    //第一列的设置--------------------------------
    UIView *v1 = [[self subviews] objectAtIndex:1 ];
    v1.alpha = 0.6;
    UIView *v2 = [[self subviews] objectAtIndex:2 ];
    v2.alpha = 0;
    UIView *v3 = [[self subviews] objectAtIndex:3 ];
    v3.alpha = 0;
    UIView *v4 = [[self subviews] objectAtIndex:4 ];
    v4.backgroundColor = [Function colorWithHexString:@"#eae1d8"];
    UIView *v5 = [[self subviews] objectAtIndex:5 ];
    v5.alpha = 0.0;
    UIView *v6 = [[self subviews] objectAtIndex:6 ];
    v6.alpha=0.6;
    
    [self setNeedsDisplay];
    
}


@end

 

 

======================================================

如果是两列的就用下面这个

- (void)drawRect:(CGRect)rect {
    
    //改变最外层的背景
    UIView *v0 = [[self subviews] objectAtIndex:0 ];
    v0.backgroundColor = [Function colorWithHexString:@"#f5f5f5"];
    
    //去掉最大的框
    UIView *v14 = [[self subviews] objectAtIndex:14];
    v14.alpha = 0.0;
    
    //第一列的设置--------------------------------
    UIView *v1 = [[self subviews] objectAtIndex:1 ];
    v1.alpha = 0.6;
    UIView *v2 = [[self subviews] objectAtIndex:2 ];
    v2.alpha = 0;
    UIView *v3 = [[self subviews] objectAtIndex:3 ];
    v3.alpha = 0;
    UIView *v4 = [[self subviews] objectAtIndex:4 ];
    v4.backgroundColor = [Function colorWithHexString:@"#eae1d8"];
    UIView *v5 = [[self subviews] objectAtIndex:5 ];
    v5.alpha = 0.0;
    UIView *v6 = [[self subviews] objectAtIndex:6 ];
    v6.alpha=0.6;
    
    
    //第二列的设置--------------------------------
    UIView *v7 = [[self subviews] objectAtIndex:7 ];
    v7.alpha = 0.6;
    UIView *v8 = [[self subviews] objectAtIndex:8 ];
    v8.alpha = 0;
    UIView *v9 = [[self subviews] objectAtIndex:9 ];
    v9.alpha = 0;
    UIView *v10 = [[self subviews] objectAtIndex:10 ];
    v10.backgroundColor = [Function colorWithHexString:@"#eae1d8"];
    UIView *v11 = [[self subviews] objectAtIndex:11 ];
    v11.alpha = 0.0;
    UIView *v12 = [[self subviews] objectAtIndex:12 ];
    v12.alpha=0.6;
    
    [self setNeedsDisplay];
    
}

转载于:https://www.cnblogs.com/lear/p/3214001.html

自定义一个 UIPickerView,你需要遵循 UIPickerViewDataSource 和 UIPickerViewDelegate 协议,并实现其中的方法。 首先,你需要创建一个 UIPickerView 实例,并设置其数据源和代理为当前视图控制器。 ```swift class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { let pickerView = UIPickerView() override func viewDidLoad() { super.viewDidLoad() pickerView.dataSource = self pickerView.delegate = self view.addSubview(pickerView) } } ``` 接着,你需要实现 UIPickerViewDataSource 协议中的两个必须方法:numberOfComponents(in:) 和 numberOfRows(inComponent:)。前者用于返回选择器中的列数,后者用于返回每列中的行数。 ```swift func numberOfComponents(in pickerView: UIPickerView) -> Int { return 2 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return 10 } ``` 这里我们设置了两列,每列都有 10 行。 然后,你需要实现 UIPickerViewDelegate 协议中的方法来自定义选择器的样式和行为。比如,你可以自定义每一行的标题和宽度,以及选择器的动画效果。 ```swift func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return "Row \(row)" } func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { return 100 } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { print("Selected row \(row) in component \(component)") } ``` 这里我们简单地返回了每一行的标题为 "Row \(row)",每列的宽度为 100,当选择器的行被选中时,会在控制台输出相应的信息。 最后,你需要将 UIPickerView 添加到你的视图中,并设置它的位置和大小。 ```swift pickerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 200) ``` 这里我们将选择器的宽度设置为与视图宽度相同,高度为 200,然后将其添加到视图的顶部。 这样,你就可以自定义一个 UIPickerView 了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值