gpt4 book ai didi

iphone - 使用 Tapku 日历创建透明日历

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

首先,我要感谢您在本网站上提供的所有有用的答案。我大约六个月前开始编程,我学到的很多东西都来自这里的问题/答案。

我在 iPhone 项目中使用 Tapku 库中的日历,并希望日历 block 是透明的,以便我可以看到我的 TKCalendarMonthView View 后面的 View 。

我使用 this tutorial 中的代码实现了 TKCalendarMonthView作者:本杰明· PIL 逊。

然后我删除了图 block 图像并尝试了来自 this answer 的代码@Jacques,所以 TKCalendarMonthView.m 中的 drawrect 函数看起来像这样:

- (void) drawRect:(CGRect)rect {

//From Jacques' StackOverflow answer (I also put this in the init)
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];


//From Jacques' answer
[[UIColor clearColor] setFill
];
UIRectFill(rect);

//Remove CGContextRef
//CGContextRef context = UIGraphicsGetCurrentContext();
//UIImage *tile = [UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile.png")];

CGRect r = CGRectMake(0, 0, 46, 44);

//From Jacques' StackOverflow answer
[[UIColor clearColor] setFill];
UIRectFill(r);

//Remove this sense we won't use the tile image
//CGContextDrawTiledImage(context, r, tile.CGImage);


if(today > 0){
int pre = firstOfPrev > 0 ? lastOfPrev - firstOfPrev + 1 : 0;
int index = today + pre-1;
CGRect r =[self rectForCellAtIndex:index];
r.origin.y -= 7;

//Don't use image here
//[[UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png")] drawInRect:r];
}

int index = 0;

UIFont *font = [UIFont boldSystemFontOfSize:dateFontSize];
UIFont *font2 =[UIFont boldSystemFontOfSize:dotFontSize];

//Change the font for our dates:
font = [UIFont fontWithName:@"HelveticaNeue-Light" size:dateFontSize];
font2 = [UIFont fontWithName:@"HelveticaNeue-Light" size:dateFontSize];
UIColor *color = [UIColor grayColor];

if(firstOfPrev>0){
[color set];
for(int i = firstOfPrev;i<= lastOfPrev;i++){
r = [self rectForCellAtIndex:index];
if ([marks count] > 0)
[self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
else
[self drawTileInRect:r day:i mark:NO font:font font2:font2];
index++;
}
}

//Set the color for all dates in the current month that are not today
color = [UIColor colorWithRed:59/255. green:73/255. blue:88/255. alpha:1];


[color set];
for(int i=1; i <= daysInMonth; i++){

r = [self rectForCellAtIndex:index];
if(today == i) [[UIColor whiteColor] set];

if ([marks count] > 0)
[self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
else
[self drawTileInRect:r day:i mark:NO font:font font2:font2];
if(today == i) [color set];
index++;
}

[[UIColor grayColor] set];
int i = 1;
while(index % 7 != 0){
r = [self rectForCellAtIndex:index] ;
if ([marks count] > 0)
[self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
else
[self drawTileInRect:r day:i mark:NO font:font font2:font2];
i++;
index++;
}

}

问题是现在瓷砖(CGRects)是黑色的;或者它们后面的任何 View 都是黑色的,坦率地说,我有点迷失在 Tapku 的代码中。有谁知道为什么瓷砖是黑色的?或者我应该查看 Tapku 代码中的什么位置?我对 Core Graphics 不是很熟悉,所以也许我遗漏了一些基本/明显的东西。

注意:我还尝试更改 TKCalendarMonthView 的 tileBox(它是一个似乎包含日历图 block 的 UIScrollView)的颜色,虽然它确实改变了颜色,但不会影响图 block 的背景颜色。

提前致谢!如果有任何不清楚的地方,请告诉我。

最佳答案

您可以按照以下步骤透明化日历 block

第一步

注释TKCalendarMonthView.m中的代码

+ (void) initialize{
if (self == [TKCalendarMonthTiles class]){
//tileImage = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Date Tile.png")];
}
}

第二步

修改TKCalendarMonthView.m中的代码

添加一行代码[self.currentTile setBackgroundColor:[UIColor clearColor]];

[self.tileBox addSubview:self.currentTile]; 行之前

在方法 - (void) _setupCurrentTileView:(NSDate*)date

所以你的代码看起来像

- (void) _setupCurrentTileView:(NSDate*)date{

....

[self.currentTile setBackgroundColor:[UIColor clearColor]];
[self.tileBox addSubview:self.currentTile];

....

}

关于iphone - 使用 Tapku 日历创建透明日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689626/

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