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];
}
@endUIView 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];
...(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
