本篇主要向大家介紹剩下幾個較為常用的UI控件,主要包括UIActivityIndicatorView、
UIStepper、
UISegmentControl、
UIProgressView。
相關文章:
TextField相關基礎用法
若干搭建UI常用的小控件(一)
UIActivityIndicatorView
UIActivityIndicatorView在現在其實并不是個十分常用的UI控件,現在大部分的App都是通過第三方庫或者自己定制的控件來實現功能,但是因為次控件還是屬于一個較為基礎的控件,所以在本篇文章中還是要進行簡單的介紹一下。
UIActivityIndicatorView繼承于UIView。
UIActivityIndicatorView* aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
//初始化創建
UIActivityIndicatorViewStyleWhiteLarge //大白
UIActivityIndicatorViewStyleWhite //小白
UIActivityIndicatorViewStyleGray //小灰
aiv.transform = CGAffineTransformMakeScale(3, 5);
//修改大小,使用變形屬性
aiv.bounds = CGRectMake(0, 0, 320, 480);
//bounds屬性的大小改不了,所以應該修改中心
- (void)startAnimating; //啟動動畫
- (void)stopAnimating; //停止動畫
- (BOOL)isAnimating; //判斷狀態
UIStepper
//創建stepper, 大小無用
UIStepper * stepper = [[UIStepper alloc] initWithFrame:CGRectMake(100, 100, 10, 10)];
//設置stepper最大值,最小值,當前值
stepper.maximumValue = 100.0;
stepper.minimumValue = 0.0;
stepper.value = 60.0;
//設置變化間隔,默認是1
stepper.stepValue = 0.5;
//設置按住,是否顯示自動增長,默認YES
//當自動增長設為NO時,該屬性無效
//當自動增長設為YES,該屬性YES,可見增長,NO,不可見增長
stepper.continuous = YES;
//設置是否自動增長
stepper.autorepeat = YES;
//設置是否首尾循環
stepper.wraps = NO;
//設置顏色
stepper.tintColor = [UIColor redColor];
//添加事件
[stepper addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
//stepper只能響應valueChanged事件
//設置背景圖,圖片大,stepper會變大
[stepper setBackgroundImage:[UIImage imageNamed:@"Image1"] forState:UIControlStateNormal];
[stepper setBackgroundImage:[UIImage imageNamed:@"Image2"] forState:UIControlStateHighlighted];
//設置中分線圖片(了解)
[stepper setDividerImage:[UIImage imageNamed:@"Image3"] forLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateNormal];
//根據兩鍵狀態不同,可以設置多張圖片
//獲取某個狀態的圖片
//因為每個狀態下可以有不同圖片,這個方法可以獲得個狀態圖片。
UIImage * image = [stepper dividerImageForLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateNormal];
[stepper setDividerImage:image forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateHighlighted];
image = [[UIImage imageNamed:@"Image4"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//設置加號(減號)圖片
[stepper setIncrementImage: image forState:UIControlStateNormal];
UISegmentControl
SegementControl是一個極為常用的UI控件,多用在作為同一個頁面的不同分區等。
//創建items數組
NSArray * items = @[@"大傻", image, @"三大傻"];
//創建SC
UISegmentedControl * sc = [[UISegmentedControl alloc] initWithItems:items];
//添加坐標
sc.frame = CGRectMake(50, 100, 200, 50);
//設置tintColor
sc.tintColor = [UIColor redColor];
//設置當前選中的segment
sc.selectedSegmentIndex = 2;
//這個方法也可以判斷當前選中的segment
//設置不能選中,松手后還原
sc.momentary = YES;
//設置某個segment寬度
[sc setWidth:0 forSegmentAtIndex:1];
//如果這個值是YES,設為0的segment寬度,自適應
// sc.apportionsSegmentWidthsByContent = YES;
//設置某個segment無效
[sc setEnabled:NO forSegmentAtIndex:2];
//判斷某個segment是否有效
BOOL ret = [sc isEnabledForSegmentAtIndex:2];
NSLog(@"%d", ret);
//設置某個segment 標題
[sc setTitle:@"都傻" forSegmentAtIndex:0];
//返回某個segment 標題
//- (NSString *)titleForSegmentAtIndex:(NSUInteger)segment;
//設置某個segment 圖片
[sc setImage:image forSegmentAtIndex:2];
// - (UIImage *)imageForSegmentAtIndex:(NSUInteger)segment;
//返回圖片
//添加事件
[sc addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
//添加背景圖片
[sc setBackgroundImage:[UIImage imageNamed:@"10_0.jpg"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
//橫屏縱屏,可以設兩張背景
UIProgressView
UIProgressView在現在并不是十分常用,大部分情況下用于擁有音頻或者視頻播放功能的App。
同樣的,UIProgressView繼承于UIView。
//高設置無用
UIProgressView * pv = [[UIProgressView alloc] initWithFrame:CGRectMake(10, 400, 300, 10)];
pv.tag = 1;
//最大值是1,最小值是0
//設置當前值
pv.progress = 0;
//設置tintColor
pv.tintColor = [UIColor redColor];
pv.trackTintColor = [UIColor yellowColor];
//如果想要加寬進度條
pv.transform = CGAffineTransformMakeScale(1, 10);
//如果想豎起進度條
pv.transform = CGAffineTransformRotate(pv.transform, - M_PI_2);
//添加圖片 設置拉伸的豎線
UIImage * image1 = [[UIImage imageNamed:@"image1"] stretchableImageWithLeftCapWidth:5 topCapHeight:0];
UIImage * image2 = [[UIImage imageNamed:@"image2"] stretchableImageWithLeftCapWidth:50 topCapHeight:0];
pv.trackImage = image2;
pv.progressImage = image1;