我已经尝试更改ImagebrowserCell子类中返回的TitleFrame的大小,并在标题上设置段落样式,以便它应该换行(NSlineBreakByWorDWrapPing),但我只得到一行文本.
有没人试过这个?我可能会尝试其他任何建议吗?
解决方法 我很害怕,不容易.一种方法是将imageTitle留空并在CALayer上绘制文本.我能够以相当不错的结果使它工作:首先要做的事情 – 因为您不打算使用标准的imageTitle属性,所以您希望在< IKImagebrowserItem>符合数据对象中创建新的Title属性.我称我为冠军.
然后,您要创建一个IKImagebrowserCell子类.确保告诉您的IKImagebrowserVIEw您正在使用自定义单元格;我刚为此写了一个快速类别:
@implementation IKImagebrowserVIEw(CustomCell)- (IKImagebrowserCell *)newCellForRepresentedItem:(ID)cell{ return [[MyCustomImagebrowserCell alloc] init];}@end
接下来,在自定义单元格中,重写方法 – (CALayer *)layerForType:(Nsstring *)类型.为特定图层位置类型创建并返回CALayer:
- (CALayer *)layerForType:(Nsstring *)type{ if( [type isEqualToString:IKImagebrowserCellBackgroundLayer] ) { CALayer *layer = [CALayer layer]; layer.delegate = self; layer.frame = self.frame; // the cell's frame layer.name = type; // a way to refer to the layer location type during drawing if need be [layer setNeedsdisplay]; return layer; } return [super layerForType:type];}
然后,在自定义单元格中实现-drawLayer:inContext:方法来处理图层的绘图:
- (voID)drawLayer:(CALayer *)layer inContext:(CGContextRef)context{ // Set the current context. [NSGraphicsContext saveGraphicsstate]; NSGraphicsContext *nscg = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO]; [NSGraphicsContext setCurrentContext:nscg]; Nsstring *Title = [self.representedItem Title]; // Wrap and center the text NSMutableParagraphStyle *paragraphStyle = [[[NSMutableParagraphStyle alloc] init] autorelease]; [paragraphStyle setlineBreakMode:NSlineBreakByWorDWrapPing]; [paragraphStyle setAlignment:NSCenterTextAlignment]; NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; [attrs setobject:paragraphStyle forKey:NSParagraphStyleAttributename]; [attrs setobject:[NSFont systemFontOfSize:12.0f] forKey:NSFontAttributename]; CGfloat padding = 4.0f; [Title drawInRect:NSMakeRect( 0,-(self.imageFrame.size.height + padding),self.frame.size.wIDth,100 ) withAttributes:attrs]; [NSGraphicsContext restoreGraphicsstate];}
不幸的是,这种方法确实有一些缺点.文本没有得到像imageTitle那样的蓝色选择背景.但是,您可以使用IKImagebrowserCellSelectionLayer的自定义CALayer中的NSBezIErPath绘制自己的选择背景.
希望这足以继续下去.
总结以上是内存溢出为你收集整理的可可 – IKImageBrowserView可以显示多行标题吗?全部内容,希望文章能够帮你解决可可 – IKImageBrowserView可以显示多行标题吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)