ios 怎么设置pickerview的间距

ios 怎么设置pickerview的间距,第1张

方法/步骤

创建工程项目和视图控制器

1、创建工程项目,新建一个UIViewController;

2、选中工程,右键-New File…选择“Cocoa Touch Class”-Next,给个合理的名称ViewController,再Next完成;

3、在AppDelegate.m文件包含#import "ViewController.h";

4、初始化创建ViewController的视图控制器,并用导航栏控制器包含。将之设置为根视图控制器。

创建UIPickerView及添加代理

1、在ViewController.h添加事件代理和数据源代理<UIPickerViewDelegate,UIPickerViewDataSource>;

2、在ViewController.h创建UIPickerView。

3、在ViewController.m初始化self.pickerView;

4、代理授权并添加至视图;

5、初始化需要列举的数据数组。

添加UIPickerView行列代理方法

1、列数:numberOfComponentsInPickerView;

2、行数:numberOfRowsInComponent;

3、行的高度:rowHeightForComponent;

4、行的宽度:widthForComponent

添加UIPickerView内容显示代理方法

1、每行显示的View:viewForRow;

2、每行显示的标题:titleForRow;

3、每行显示的标题字体、颜色等属性:attributedTitleForRow;

4、被选择行:didSelectRow。

为代理方法添加代码

1、numberOfComponentsInPickerView列数返回3列;

2、numberOfRowsInComponent行数根据某列返回相应行数;

3、rowHeightForComponent高度返回20.0f;

4、widthForComponent行的宽度根据需要返回。

5、viewForRow返回UIView,用来添加UILabel显示城市列表的;

6、attributedTitleForRow获取标题数组string,设置string的字体颜色等,18号粗体;

7、didSelectRow当滚动UIPickerView停止后,显示当前行为被选中行,打印输出。

编译执行,run得结果。

有时候我们希望可以设置UILabel的内边距,为了解决这个问题,设计MarginLabel如下,继承自UILabel:

实例化一个MarginLabel:

不设置内边距的时候:

设置内边距:

效果:

.h文件

----------------------------------------------------------------------------------------------------------------

#import

@interface ShowLabel : UILabel

@property ( nonatomic , assign ) UIEdgeInsets edgeInsets

@end

----------------------------------------------------------------------------------------------------------------

.m文件

----------------------------------------------------------------------------------------------------------------

#import "ShowLabel.h"

@implementation ShowLabel

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines {

    UIEdgeInsetsinsets = self .edgeInsets

    CGRect rect = [ super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)

                    limitedToNumberOfLines:numberOfLines]

    rect.origin.x    -= insets.left

    rect.origin.y    -= insets.top

    rect.size.width  += (insets.left+ insets.right)

    rect.size.height+= (insets.top+ insets.bottom)

    return rect

}

- ( void )drawTextInRect:(CGRect)rect {

    [ super drawTextInRect:UIEdgeInsetsInsetRect(rect, self .edgeInsets)] 

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

@end

----------------------------------------------------------------------------------------------------------------

使用方法和系统方法一样

 ShowLabel*areaLb1=[[ShowLabel alloc]init]

                [cell.contentViewaddSubview:areaLb1]

areaLb1.edgeInsets=UIEdgeInsetsMake(5,5,5,5)//设置内边距

                [areaLb1sizeToFit]//重新计算尺寸,会执行Label内重写的方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8027764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存