菜鸟教程小白 发表于 2022-12-13 04:03:07

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


                                            <p><p>首先,我要感谢本网站上所有有用的答案。我大约六个月前开始编程,我学到的很多东西都是从这里的问题/答案中学到的。</p>

<p>我在一个 iPhone 项目中使用 Tapku Library 中的日历,并希望日历图 block 是透明的,以便我可以看到 TKCalendarMonthViewView 后面的 View 。</p>

<p>我使用 <a href="http://developinginthedark.com/posts/iphone-tapku-calendar-markers" rel="noreferrer noopener nofollow">this tutorial</a> 中的代码实现了 TKCalendarMonthView由本杰明· PIL 森撰写。</p>

<p>然后我删除了平铺图像并尝试了 <a href="https://stackoverflow.com/questions/3800278/iphone-draw-transparent-rectangle-on-uiview-to-reveal-view-beneath" rel="noreferrer noopener nofollow">this answer</a> 中的代码@Jacques,所以 TKCalendarMonthView.m 中的 drawrect 函数看起来像这样:</p>

<pre><code>- (void) drawRect:(CGRect)rect {

//From Jacques&#39; StackOverflow answer (I also put this in the init)
self.opaque = NO;
self.backgroundColor = ;


//From Jacques&#39; answer
[ setFill
];
UIRectFill(rect);

//Remove CGContextRef
    //CGContextRef context = UIGraphicsGetCurrentContext();
    //UIImage *tile = ;

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

//From Jacques&#39; StackOverflow answer
[ setFill];
UIRectFill(r);

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


if(today &gt; 0){
    int pre = firstOfPrev &gt; 0 ? lastOfPrev - firstOfPrev + 1 : 0;
    int index = today +pre-1;
    CGRect r =;
    r.origin.y -= 7;

    //Don&#39;t use image here
    //[ drawInRect:r];
}

int index = 0;

UIFont *font = ;
UIFont *font2 =;

//Change the font for our dates:
font = ;
font2 = ;
UIColor *color = ;

if(firstOfPrev&gt;0){
    ;
    for(int i = firstOfPrev;i&lt;= lastOfPrev;i++){
      r = ;
      if ( &gt; 0)
             boolValue] font:font font2:font2];
      else
            ;
      index++;
    }
}

//Set the color for all dates in the current month that are not today
color = ;


;
for(int i=1; i &lt;= daysInMonth; i++){

    r = ;
    if(today == i) [ set];

    if ( &gt; 0)
       boolValue] font:font font2:font2];
    else
      ;
    if(today == i) ;
    index++;
}

[ set];
int i = 1;
while(index % 7 != 0){
    r = ;
    if ( &gt; 0)
       boolValue] font:font font2:font2];
    else
      ;
    i++;
    index++;
}

}
</code></pre>

<p>问题是现在瓷砖(CGRects)是黑色的;或者它们后面的任何 View 都是黑色的,坦率地说,我有点迷失在 Tapku 的代码中。有谁知道为什么瓷砖是黑色的?或者我应该在 Tapku 代码中的哪个位置查找?我对核心图形不是很熟悉,所以也许我缺少一些基本/明显的东西。 </p>

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

<p>提前致谢!如果有任何不清楚的地方,请告诉我。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以按照以下步骤透明日历图 block </p>

<p><strong>第一步</strong></p>

<p>在 TKCalendarMonthView.m 中注释代码</p>

<pre><code>+ (void) initialize{
    if (self == ){
      //tileImage = ;
    }
}
</code></pre>

<p><strong>第二步</strong></p>

<p>更改 TKCalendarMonthView.m 中的代码</p>

<p>添加代码行<code>];</code> </p>

<p>行前<code>;</code> </p>

<p>在方法 <code>- (void) _setupCurrentTileView:(NSDate*)date</code></p>

<p>所以你的代码看起来像</p>

<pre><code>- (void) _setupCurrentTileView:(NSDate*)date{

    ....

    ];
    ;

    ....

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 使用 Tapku Calendar 创建透明日历,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18689626/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18689626/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 使用 Tapku Calendar 创建透明日历