gpt4 book ai didi

objective-c - 如何更改 UIDatePicker 的颜色?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:41 25 4
gpt4 key购买 nike

如果有人想知道如何更改 UIDatePicker(围绕实际微调器的部分)的背景颜色,请参阅下面我的回答。

最佳答案

要设置您想要的颜色,只需更改 createCover 方法以将 cover 设置为您想要的任何颜色。

//CustomizableDatePicker.m

#import "CustomizableDatePicker.h"
#import <QuartzCore/QuartzCore.h>

#define TOP_HEIGHT 9.7f
#define BOTTOM_HEIGHT TOP_HEIGHT
#define DATE_AND_TIME_MODE_ACTUAL_PICKER_WIDTH 302.5f
#define DATE_MODE_ACTUAL_PICKER_WIDTH 280.0f
#define TIME_MODE_ACTUAL_PICKER_WIDTH 176.0f

@interface CustomizableDatePicker()
@property (nonatomic, weak) UIView *myLeftCover;
@property (nonatomic, weak) UIView *myRightCover;
@property (nonatomic, weak) UIView *myTopCover;
@property (nonatomic, weak) UIView *myBottomCover;
@end

@implementation CustomizableDatePicker
@synthesize myLeftCover = _myLeftCover, myRightCover = _myRightCover, myTopCover = _myTopCover, myBottomCover = _myBottomCover;

- (void) setDatePickerMode:(UIDatePickerMode)datePickerMode
{
[super setDatePickerMode:datePickerMode];

[self setNeedsLayout];
}

- (void) awakeFromNib
{
[self addCoverViews];
self.layer.cornerRadius = 10;
self.clipsToBounds = YES;
[self setNeedsLayout];
[self setNeedsDisplay];
}

- (id) init
{
if(self = [super init])
{
[self addCoverViews];
self.layer.cornerRadius = 10;
self.clipsToBounds = YES;
[self setNeedsLayout];
[self setNeedsDisplay];
}

return self;
}

/*
* Creates, but does NOT set the frames of, the 4 covers
*/
- (void) addCoverViews
{
UIView *left = [self createCover];
self.myLeftCover = left;
[self addSubview:left];

UIView *right = [self createCover];
self.myRightCover = right;
[self addSubview:right];

UIView *top = [self createCover];
self.myTopCover = top;
[self addSubview:top];

UIView *bottom = [self createCover];
self.myBottomCover = bottom;
[self addSubview:bottom];
}

/*
* Helper function to create one cover
*/
- (UIView *) createCover;
{
UIView *cover = [[UIView alloc] init];
cover.backgroundColor = [UIColor whiteColor];
cover.alpha = .55;
return cover;
}

- (void) layoutSubviews
{
float pickerWidth;
if(self.datePickerMode == UIDatePickerModeDateAndTime)
{
pickerWidth = DATE_AND_TIME_MODE_ACTUAL_PICKER_WIDTH;
}
else if(self.datePickerMode == UIDatePickerModeDate)
{
pickerWidth = DATE_MODE_ACTUAL_PICKER_WIDTH;
}
else if(self.datePickerMode == UIDatePickerModeTime)
{
pickerWidth = TIME_MODE_ACTUAL_PICKER_WIDTH;
}
// Set left frame
{
float xOrigin = 0;
float yOrigin = TOP_HEIGHT;
float width = (self.frame.size.width - pickerWidth) / 2;
float height = self.frame.size.height - TOP_HEIGHT - BOTTOM_HEIGHT ;
self.myLeftCover.frame = CGRectMake(xOrigin, yOrigin, width, height);
}
// Set top frame
{
float xOrigin = 0;
float yOrigin = 0;
float width = self.frame.size.width;
float height = TOP_HEIGHT;
self.myTopCover.frame = CGRectMake(xOrigin, yOrigin, width, height);
}
// Set right frame
{
float xOrigin = (self.frame.size.width - pickerWidth) / 2 + pickerWidth;
float yOrigin = TOP_HEIGHT;
float width = (self.frame.size.width - pickerWidth) / 2;
float height = self.frame.size.height - TOP_HEIGHT - BOTTOM_HEIGHT ;
self.myRightCover.frame = CGRectMake(xOrigin, yOrigin, width, height);
}
// Set bottom frame
{
float xOrigin = 0;
float yOrigin = self.frame.size.height - BOTTOM_HEIGHT;
float width = self.frame.size.width;
float height = BOTTOM_HEIGHT;
self.myBottomCover.frame = CGRectMake(xOrigin, yOrigin, width, height);
}
}

@end




//CustomizableDatePicker.h
#import <UIKit/UIKit.h>

/*
* Allows for changing the color of UIDatePickers...Pretty useful, huh? :)
*/
@interface CustomizableDatePicker : UIDatePicker

@end

关于objective-c - 如何更改 UIDatePicker 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com