首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在iPhone中创建带有小时和秒的自定义图像的数字钟?

如何在iPhone中创建带有小时和秒的自定义图像的数字钟?
EN

Stack Overflow用户
提问于 2011-10-03 14:33:44
回答 3查看 2K关注 0票数 0

我有10张图像,从0到10,用于设置我的数字时钟的小时和分钟。我对如何将自定义图像设置为数字时钟以使其开始工作感到困惑。

这是我的代码:

代码语言:javascript
复制
- (void)viewDidLoad {
    //timer to recursively call the showClock method.
    timer=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showClock) userInfo:nil repeats:YES];  
    [super viewDidLoad];
}



-(void)showClock
{
    NSDate *dateShow= [NSDate dateWithTimeIntervalSinceNow:0];
    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setTimeStyle:NSDateFormatterMediumStyle];
    NSString *dateString = [dateFormat stringFromDate:dateShow];


    NSDate * date = [NSDate date];
    NSCalendar * calendar = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents * components =
    [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:date];

    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSInteger firstHourDigit = hour/60;
    NSInteger secondHourDigit = hour%60;
    NSInteger firstMinuteDigit = minute/60;
    NSInteger secondMinuteDigit = minute%60;
    [minfirstImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"0.png", firstHourDigit]]];
    [minsecondImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%0.png",secondHourDigit]]];
    [secfirstImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%0.png",firstMinuteDigit]]];
    [secSecondImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%0.png",secondMinuteDigit]]];


}

当我运行我的应用程序时,图像视图不会与图像一起显示。可能的问题是什么?计算中有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-03 17:03:32

从0.png-9.png中获取图像名称,并尝试使用以下代码,它将对您有所帮助

代码语言:javascript
复制
NSDate *dateShow= [NSDate dateWithTimeIntervalSinceNow:0];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setTimeStyle:NSDateFormatterMediumStyle];
NSString *dateString = [dateFormat stringFromDate:dateShow];


NSDate * date = [NSDate date];
NSCalendar * calendar = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents * components =
[calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:date];

NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSInteger firstHourDigit = hour/10;
NSInteger secondHourDigit = hour%10;
NSInteger firstMinuteDigit = minute/10;
NSInteger secondMinuteDigit = minute%10;
int res=0;
for(int i =0;i<4;i++)
{

    if(i==0)
         res = firstHourDigit;
    else if(i==1)
        res = secondHourDigit;
    else if (i==2)
        res = firstMinuteDigit;
    else 
        res = secondMinuteDigit;
        NSString *str_imageName;
switch (res) {

    case 0:
        str_imageName=@"0.png";
        break;
    case 1:
        str_imageName=@"1.png";
        break;
    case 2:
        str_imageName=@"2.png";
        break;
    case 3:
        str_imageName=@"3.png";
        break;
    case 4:
        str_imageName=@"4.png";
        break;
    case 5:
        str_imageName=@"5.png";
        break;
    case 6:
        str_imageName=@"6.png";
        break;
    case 7:
        str_imageName=@"7.png";
        break;
    case 8:
        str_imageName=@"8.png";
        break;
    case 9:
        str_imageName=@"9.png";
        break;

    default:
        break;
}
    if(i==0)
        [minfirstImage setImage:[UIImage imageNamed:str_imageName]];
    else if(i==1)
        [minsecondImage setImage:[UIImage imageNamed:str_imageName]];
    else if (i==2)
        [secfirstImage setImage:[UIImage imageNamed:str_imageName]];
    else 
        [secSecondImage setImage:[UIImage imageNamed:str_imageName]];


}
票数 0
EN

Stack Overflow用户

发布于 2011-10-03 17:04:40

拉尼..。

我认为使用不同的图像计时是增加你的应用程序的大小,所以我有一个建议,你只需检查这段代码并根据你的要求进行更改我认为这是显示你想要的时间的最好方式,

对于这段代码,您只需创建一个不带文本的背景图像...

代码语言:javascript
复制
- (void)viewDidLoad {
        [super viewDidLoad];

        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showClock) userInfo:nil repeats:YES];  
        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem;
    }



-(void)showClock
{
    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate* now = [NSDate date]; 
    int h = [[cal components:NSHourCalendarUnit fromDate:now] hour];
    int m = [[cal components:NSMinuteCalendarUnit fromDate:now] minute];
    int s = [[cal components:NSSecondCalendarUnit fromDate:now] second];
    [cal release];


//    NSInteger firstHourDigit = hour/60;
//    NSInteger secondHourDigit = hour%60;
//    NSInteger firstMinuteDigit = minute/60;
//    NSInteger secondMinuteDigit = minute%60;

    NSLog(@"\n Time :%d : %d : %d",h,m,s);


    [imgViewHour setImage:[self getImageFor:[NSString stringWithFormat:@"%d",h]]];
    [imgViewMnt setImage:[self getImageFor:[NSString stringWithFormat:@"%d",m]]];
    [imgViewSec setImage:[self getImageFor:[NSString stringWithFormat:@"%d",s]]];


}



-(UIImage *)getImageFor:(NSString*)txt {


        int w =50,h=35;


        UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(3, 3, w-6, h-6)];
        lbl.text = txt;
        lbl.textColor = [UIColor whiteColor];
        lbl.textAlignment = UITextAlignmentCenter;
        lbl.font = [UIFont fontWithName:@"Arial" size:18];
        lbl.font = [UIFont boldSystemFontOfSize:14];
        [lbl setBackgroundColor:[UIColor clearColor]];
        lbl.shadowOffset=CGSizeMake(0,2);
        lbl.shadowColor = [UIColor blackColor];


        UIView *viewImage = [[UIView alloc] initWithFrame:CGRectMake(0, 0, w, h)];

        [viewImage setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"imageBackGround.png"]]];
        [viewImage addSubview:lbl];

        UIGraphicsBeginImageContext(viewImage.bounds.size);
        [viewImage.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *Image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        [viewImage release];

        return Image;

    }

谢谢... :)

票数 1
EN

Stack Overflow用户

发布于 2011-10-03 15:23:55

维护一个UIImages数组,然后逐个字符分解字符串,查看其中的数字:

代码语言:javascript
复制
create array for images
load images into array

create array for imageviews
put imageviews into array

loop 5 times
if we're on 2 then skip // dot
else create substring from that character and call integerValue on it
use that as index into array
set imageview at index to image at index
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7631709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档