iphone – UISegmentedControl文本多行?
发布时间:2020-12-15 02:01:40 所属栏目:百科 来源:网络整理
导读:如何使UISegmentedControl中的其中一个按钮的文本跨多行? 解决方法 我这样做: 创建一个多线UILabel 用N行文本填写标签 将标签转换成UIImage 将图像设置为片段内容 这在iOS 4,5,6上顺利 和iOS 7(只是删除文字阴影) MultiLineSegmentedControl – 头文件 /
如何使UISegmentedControl中的其中一个按钮的文本跨多行?
解决方法
我这样做:
>创建一个多线UILabel 这在iOS 4,5,6上顺利 和iOS 7(只是删除文字阴影) MultiLineSegmentedControl – 头文件 // // MultiLineSegmentedControl.h // // Created by Jens Kreiensiek on 20.07.11. // Copyright 2011 SoButz. All rights reserved. // #import <Foundation/Foundation.h> @interface MultiLineSegmentedControl : UISegmentedControl - (void)setMultilineTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment; @end MultiLineSegmentedControl – 实现文件 // // MultiLineSegmentedControl.m // // Created by Jens Kreiensiek on 20.07.11. // Copyright 2011 SoButz. All rights reserved. // #import "MultiLineSegmentedControl.h" #import "UIView+LayerShot.h" @interface MultiLineSegmentedControl() @property (nonatomic,retain) UILabel *theLabel; @end @implementation MultiLineSegmentedControl @synthesize theLabel; - (void)dealloc { self.theLabel = nil; [super dealloc]; } - (UILabel *)theLabel { if (!self->theLabel) { self->theLabel = [[UILabel alloc] initWithFrame:CGRectZero]; self->theLabel.textColor = [UIColor whiteColor]; self->theLabel.backgroundColor = [UIColor clearColor]; self->theLabel.font = [UIFont boldSystemFontOfSize:13]; self->theLabel.textAlignment = UITextAlignmentCenter; self->theLabel.lineBreakMode = UILineBreakModeWordWrap; self->theLabel.shadowColor = [UIColor darkGrayColor]; self->theLabel.numberOfLines = 0; } return self->theLabel; } - (void)setMultilineTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment { self.theLabel.text = title; [self.theLabel sizeToFit]; [self setImage:self.theLabel.imageFromLayer forSegmentAtIndex:segment]; } @end UIView LayerShot – 头文件 // // UIView+LayerShot.h // // Created by Jens Kreiensiek on 29.06.12. // Copyright (c) 2012 SoButz. All rights reserved. // #import <UIKit/UIKit.h> @interface UIView (LayerShot) - (UIImage *)imageFromLayer; @end UIView LayerShot – 实现文件 // // UIView+LayerShot.m // // Created by Jens Kreiensiek on 29.06.12. // Copyright (c) 2012 SoButz. All rights reserved. // #import "UIView+LayerShot.h" #import <QuartzCore/QuartzCore.h> @implementation UIView (LayerShot) - (UIImage *)imageFromLayer { UIGraphicsBeginImageContextWithOptions(self.bounds.size,NO,0); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } @end 像普通的UISegmentedControl一样使用它: ... MultiLineSegmentedControl *segment = [[MultiLineSegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"A",@"B",nil]]; segment.segmentedControlStyle = UISegmentedControlStyleBar; segment.frame = CGRectMake(0,200,segment.frame.size.height * 1.5); [segment setMultilineTitle:@"Title AnSubtitle A" forSegmentAtIndex:0]; [segment setMultilineTitle:@"Title BnSubtitle B" forSegmentAtIndex:1]; [self.view addSubview:segment]; [segment release]; ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |