iOS---基本的UI控件
来源:互联网 发布:车刀角度测量实验数据 编辑:程序博客网 时间:2024/06/05 22:56
不知不觉一年多了,该好好整理啦!亡羊补牢,希望为时不晚
//
// ViewController.m
// 整理笔记
//
// Created by imac on 15/8/22.
// Copyright (c) 2015年公司信息yu. All rights reserved.
//
#import "ViewController.h"
#pragma mark - 使用宏替换
// 减少硬编码,使用获取的屏幕的物理尺寸来适配UI
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
@interface ViewController ()
{NSInteger _index;}
@property (strong,nonatomic) UIView *myView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//通过tag值查找view
UIView *myView1 = [self.viewviewWithTag:100];
myView1.alpha =0.5;
#pragma mark - 坐标系统转换
// 拿到视图的 transform
CGAffineTransform transform =self.myView.transform;
// 构造一个 x方向放大了 1.2, y方向放大了1.2倍的transform
self.myView.transform =CGAffineTransformScale(transform,1.2, 1.2);
// 构造一个 x方向缩小了 0.8, y方向缩小了0.8倍的transform
self.myView.transform =CGAffineTransformScale(transform,0.8, 0.8);
// 沿着center选择指定的角度 M_PI:π= 180°
self.myView.transform =CGAffineTransformRotate(transform,M_PI / 3.0);
//位置复原
self.myView.transform =CGAffineTransformIdentity;
#pragma mark - /*************** UI控件 **************/
#pragma mark UILabel
UILabel *textLabel = [[UILabelalloc] initWithFrame:CGRectMake(0,100, kScreenWidth,200)];
#warning 要先设置内容,才能自适应.而且自适应,要写在行数设置后面
// 内容自适应
// [textLabel sizeToFit];
// 设置内容
textLabel.text =@"Talk is cheap, show me the Code.废话少说,放码过来";
textLabel.backgroundColor = [UIColororangeColor];
// 行数设置,默认为1单行显示。 0表示行数没有限制,在足够的高度之下,换行显示
textLabel.numberOfLines =0;
// 设置文本的打断方式 Mode模式、 style样式, type类型
textLabel.lineBreakMode =NSLineBreakByTruncatingMiddle;
// 设置文本颜色
textLabel.textColor = [UIColorgrayColor];
// 设置阴影颜色
textLabel.shadowColor = [UIColorblackColor];
// 设置阴影的偏移量 (水平位置,垂直位置)
textLabel.shadowOffset =CGSizeMake(3,3);
// 设置文本的对齐方式
textLabel.textAlignment =NSTextAlignmentCenter;
// 设置字体
// textLabel.font = [UIFont systemFontOfSize:28];
// textLabel.font = [UIFont boldSystemFontOfSize:28];
textLabel.font = [UIFontitalicSystemFontOfSize:28];
// 内容自适应
[textLabel sizeToFit];
textLabel.tag =101;
// 设置文本特殊状态下的显示效果
textLabel.highlightedTextColor = [UIColorredColor];
[self.viewaddSubview:textLabel];
// 测试高亮状态
// [self performSelector:@selector(test:) withObject:textLabel afterDelay:2];
[NSTimerscheduledTimerWithTimeInterval:0.5target:selfselector:@selector(test:)userInfo:nilrepeats:YES];
}
- (void)test:(NSTimer *)timer {
UILabel *textLabel = (UILabel *)[self.viewviewWithTag:101];
textLabel.highlighted = !textLabel.highlighted; // 设置高亮状态
}
- (void)viewDidLoad1 {
[superviewDidLoad];
#pragma mark UIImageView 图像视图
// 作用:显示单个图片,或者一组动画图片
// ----------------- 显示单张图片 ------------------
// 初始化UIImage对象
// 图片拥有 thin.jpeg、thin@2x.jpeg、 thin@3x.jpeg
// 图片倍数可以省略。
// 图片的扩展名,如果是 ".png"可以省略
UIImageView *imgView = [[UIImageViewalloc] initWithFrame:CGRectMake(35,100, 300,300)];
imgView.backgroundColor = [UIColororangeColor];
imgView.image = [UIImageimageNamed:@"thin.jpeg"];
[self.viewaddSubview:imgView];
// 设置图片内容显示模式
/**
* UIViewContentModeScaleToFill, 拉伸铺满视图
UIViewContentModeScaleAspectFit, 自适应拉伸,不破坏宽高比例
UIViewContentModeScaleAspectFill, 可以超出视图范围,不破环比例
*
*/
imgView.contentMode =UIViewContentModeTopLeft;
imgView.clipsToBounds =YES;
// 设置图像视图的高亮状态
imgView.highlightedImage = [UIImageimageNamed:@"image"];
#pragma mark UIButton
#warning 自定按钮,设置图片方法的区别
// UI设计师, 美工
// 自定义按钮,首先要把按钮的类型设置为 Custom自定义类型
// setBackgroundImage: 会拉伸图片,但是不会影响标题显示
// setImage: 会使用图片的原始大小,但是会干扰标题的显示
UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];
button.frame =CGRectMake(160,10, 60,44);
// 1.设置按钮的标题
// 设置标题的颜色
[button setTitleColor:[UIColorgreenColor] forState:UIControlStateNormal];
[button setTitle:@"正常状态哈哈"forState:UIControlStateNormal]; // 普通
[button setTitle:@"按钮被选中"forState:UIControlStateSelected];// 选中
[button setTitle:@"高亮"forState:UIControlStateHighlighted];// 高亮
[button setTitle:@"失效的"forState:UIControlStateDisabled]; // 失效
// button.enabled = NO; //设置按钮的可用状态,如果设置失效状态,会显示该状态
// button.userInteractionEnabled = NO; //只是不能响应事件,不会改变按钮的显示
[button setImage:[UIImageimageNamed:@"playing_btn_love"]forState:UIControlStateNormal];
[button setImage:[UIImageimageNamed:@"playing_btn_in_myfavor_h"]forState:UIControlStateHighlighted];
[button setImage:[UIImageimageNamed:@"playing_btn_in_myfavor"]forState:UIControlStateSelected];
// 设置背景图片,图片会被拉伸,并且是被标题盖住
[button setBackgroundImage:[UIImageimageNamed:@"playing_btn_love"]forState:UIControlStateNormal];
[button setBackgroundImage:[UIImageimageNamed:@"playing_btn_in_myfavor_h"]forState:UIControlStateHighlighted];
[button setBackgroundImage:[UIImageimageNamed:@"playing_btn_in_myfavor"]forState:UIControlStateSelected];
// 如果出现 unrecognized selector sent to instance异常原因
// 可以查找该是否实现了
[button addTarget:selfaction:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside];
[imgView addSubview:button];
// 开启用户事件.如果设置为NO,表示不响应,且视图所有子视图,都无法响应事件
imgView.userInteractionEnabled =YES;
// 添加tag
imgView.tag =110;
// 为按钮添加触摸事件
/*
UIControlEventTouchDown 用户按下手指
UIControlEventTouchDownRepeat 重复按下
UIControlEventTouchDragInside 在内部拖拽
UIControlEventTouchUpInside 用户触摸并且在范围之内抬起手指
UIControlEventTouchCancel 触摸取消:一次没有结束,屏幕失去了焦点
*/
[button addTarget:selfaction:@selector(buttonAction1:)forControlEvents:UIControlEventTouchUpInside];
//设置button的边框
UIButton *btn = [[UIButtonalloc] initWithFrame:CGRectMake(20,100, 200,30)];
[btn.layersetBorderWidth:1.0];//边框宽度
[btn.layersetBorderColor:[UIColorblackColor].CGColor];//设置边框颜色
[self.viewaddSubview:btn];
}
- (void)buttonAction1:(UIButton *)sender {
// 切换按钮的选中状态
sender.selected = !sender.selected;
}
- (void)buttonAction:(UIButton *)sender {
UIImageView *imageView = (UIImageView *)[self.viewviewWithTag:110];
imageView.highlighted = !imageView.highlighted;
}
#pragma mark - UISlider滑块
- (void)viewDidLoad2 {
[superviewDidLoad];
UISlider *slider = [[UISlideralloc] initWithFrame:CGRectMake(10,100, 310,200)];
slider.backgroundColor = [UIColororangeColor];
[slider addTarget:selfaction:@selector(sliderAction:)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:slider];
// 设置滑块的最小值
slider.minimumValue =0;
// 设置滑块的最大值
slider.maximumValue =100;
// 设置当前值
slider.value =0.5;
// 定制样式
// 设置轨迹颜色
slider.minimumTrackTintColor = [UIColorgreenColor];
slider.maximumTrackTintColor = [UIColororangeColor];
// slider setMaximumTrackImage:<#(UIImage *)#> forState:<#(UIControlState)#>
// slider setMinimumTrackImage:<#(UIImage *)#> forState:<#(UIControlState)#>
// 设置大头针颜色
// [slider setThumbTintColor:[UIColor redColor]];
// 设置大头针图片
[slider setThumbImage:[UIImageimageNamed:@"playing_slider_thumb"]forState:UIControlStateNormal];
[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(timeAction:)userInfo:slider repeats:YES];
}
- (void)timeAction:(NSTimer *)sender {
_index++;
UISlider *slider = sender.userInfo;
// slider.value = _index;
[slider setValue:_indexanimated:YES];
// if (_index == ?) {
// [sender invalidate];
// }
}
- (void)sliderAction:(UISlider *)sender {
// sender.value 默认为 0-1
NSLog(@"value = %f", sender.value);
}
#pragma mark - 属性动画
- (void)testAnimation2 {
// Block语法动画
//1.翻转效果
[UIViewanimateWithDuration:1.0animations:^{
[UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:_myViewcache:YES];
// 交换两个子视图的层次结构
[_myViewexchangeSubviewAtIndex:0withSubviewAtIndex:1];
}];
//2.view从屏幕外进入到屏幕中
_myView.frame =CGRectMake(0,kScreenHeight, 320,200);
[UIViewanimateWithDuration:0.5animations:^{
_myView.frame =CGRectMake(0,kScreenHeight - 200,320, 200);
}];
}
- (void)testAnimation1 {
// ----------------首尾式动画-------------------//
// 1.标记动画的开始
[UIViewbeginAnimations:nilcontext:nil];
// 2.设置动画的属性
[UIViewsetAnimationDuration:2.0]; // 设置动画的持续时间
[UIViewsetAnimationRepeatCount:100];//动画重复次数
[UIViewsetAnimationRepeatAutoreverses:YES];//重头播放一次
// 3.设置动画执行的操作
_myView.backgroundColor = [UIColorblueColor];
_myView.alpha =0.5;
CGRect frame =_myView.frame;
frame.size.height =300;
_myView.frame = frame;
// 设置翻转效果:只是视觉效果,并不是一个真正立体的事物发生了翻转
[UIViewsetAnimationTransition:UIViewAnimationTransitionFlipFromLeftforView:_myViewcache:YES];
// 交换两个子视图的层次结构
[_myViewexchangeSubviewAtIndex:0withSubviewAtIndex:1];
// 4.标记动画的结尾
[UIViewcommitAnimations];
}
#pragma mark - 设置颜色
-(void)setColor:(UIColor *)color{
// 设置背景颜色 65 174 57
// RGB 256色阶。 0 - 255
// 方法中的取值范围 0.0 - 1.0
// UIColor *fixedColor = [UIColor colorWithRed:65/255.0 green:174/255.0 blue:57/255.0 alpha:1];
UIColor *randColor = [UIColorcolorWithRed:(rand() %10 * 0.1)green:(rand() %10 * 0.1)blue:(rand() %10 * 0.1)alpha:1.0];
color = [UIColorcolorWithWhite:0.5alpha:0.8];
self.myView.backgroundColor = randColor;
//转换16进制颜色
NSString *background_color =@"#e6e6e6";
long red =strtoul([[background_colorsubstringWithRange:NSMakeRange(1,2)]UTF8String],0, 16);
long green =strtoul([[background_colorsubstringWithRange:NSMakeRange(3,2)]UTF8String],0, 16);
long blue =strtoul([[background_colorsubstringWithRange:NSMakeRange(5,2)]UTF8String],0, 16);
// NSLog(@"%ld — %ld —%ld",red ,green ,blue);
self.myView.backgroundColor = [UIColorcolorWithRed:red/255.0f
green:green/255.0f
blue:blue/255.0f
alpha:1.0];
}
#pragma mark - 方法集合
/**
调用一个方法,附带id参数,延迟多少秒触发
[self performSelector:@selector(changeViewHierachy:) withObject:subView1 afterDelay:3.0];
*/
#pragma mark - 搭建界面,九宫格
-(void)setApp{
#define kAppViewW 80
#define kAppViewH 90
#define kColCount 3
#define kStartY 20
// 320 - 3 * 80 = 80 / 4 = 20
CGFloat marginX = (self.view.bounds.size.width - kColCount * kAppViewW) / (kColCount +1);
CGFloat marginY = 10;
for (int i =0; i < 12; i++) {
// 行
// 0, 1, 2 => 0
// 3, 4, 5 => 1
int row = i /kColCount;
// 列
// 0, 3, 6 => 0
// 1, 4, 7 => 1
// 2, 5, 8 => 2
int col = i %kColCount;
CGFloat x = marginX + col * (marginX +kAppViewW);
CGFloat y =kStartY + marginY + row * (marginY +kAppViewH);
UIView *appView = [[UIViewalloc] initWithFrame:CGRectMake(x, y,kAppViewW, kAppViewH)];
appView.backgroundColor = [UIColorredColor];
[self.viewaddSubview:appView];
}
}
#pragma mark-遍历字符串
-(void)forinStr{
NSString *newStr =@"AbdcdddccddA00";
NSString *temp =nil;
for(int i =0; i < [newStrlength]; i++)
{
temp = [newStr substringWithRange:NSMakeRange(i,1)];
if ([tempisEqualToString:@"A"]) {
NSLog(@"第%d个字是:%@", i, temp);
}
}
NSString *str =@"Abdcdddccdd00";
for(int i =0; i < [newStr length]; i++)
{
unichar temp = [strcharacterAtIndex:i];
if (temp =='A') {
NSLog(@"第%d个字符是:%c", i, temp);
}
}
}
#pragma mark- 拆分字符串
-(void)breakUpString{
/*
//原始字符串切分
NSString *url=@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500";
NSArray *comp1 = [url componentsSeparatedByString:@"?"];
NSString *query = [comp1 lastObject];
NSArray *queryElements = [query componentsSeparatedByString:@"&"];
for (NSString *element in queryElements) {
NSArray *keyVal = [element componentsSeparatedByString:@"="];
if (keyVal.count > 0) {
NSString *variableKey = [keyVal objectAtIndex:0];
NSString *value = (keyVal.count == 2) ? [keyVal lastObject] : nil;
}
}
*/
//原始字符串切分
//http://172.16.49.224:7087/info/wap/qrcodepay/downloadclient.html?MERC_ID=888009941110054&USR_OPR_NO=1025497115
//MERCID OPRNO
NSString *urlStr=@"http://172.16.49.224:7087/info/wap/qrcodepay/downloadclient.html?MERC_ID=888009941110054&USR_OPR_NO=1025497115";
NSArray *compTemp = [urlStrcomponentsSeparatedByString:@"?"];
NSString *myQuery = [compTemp lastObject];
NSArray *myQueryElements = [myQuerycomponentsSeparatedByString:@"&"];
NSString *MERCIDtemp = [myQueryElementsobjectAtIndex:0];
NSArray *keyVal1 = [MERCIDtemp componentsSeparatedByString:@"="];
NSString *MERCIDStr = [keyVal1 lastObject];
NSString *OPRNOtemp = [myQueryElementslastObject];
NSArray *keyVal2 = [OPRNOtempcomponentsSeparatedByString:@"="];
NSString *OPRNOStr = [keyVal2 lastObject];
//iOS7.0及以后才能用
NSString *myURL = @"http://172.16.49.224:7087/info/wap/qrcodepay/downloadclient.html?MERC_ID=888009941110054&USR_OPR_NO=1025497115";
NSURLComponents *components = [NSURLComponentscomponentsWithString:myURL];
NSNumber *pageOneValue = nil;
NSNumber *pageTwoValue = nil;
for(NSURLQueryItem *itemin components.queryItems)
{
if([item.nameisEqualToString:@"MERC_ID"]){
pageOneValue = [NSNumbernumberWithInteger:item.value.integerValue];
}
if ([item.nameisEqualToString:@"USR_OPR_NO"]){
pageTwoValue = [NSNumbernumberWithInteger:item.value.integerValue];
}
}
}
#pragma mark - 创建导航控制器(AppDelegate里面进行的)
rootViewController *roorVC = [[rootViewControlleralloc] init];
UINavigationController *navigationCtrl = [[UINavigationControlleralloc] initWithRootViewController:roorVC];
self.window.rootViewController = navigationCtrl;
#pragma mark - 窗口
/**
* Xcode 6.0 版本之前,空的应用程序模板,没有 main.storyboard主界面,也没有创建好窗口。
*
* 需要使用这样的纯代码设置,需要删除 main.storyboard, ViewController
* 并且在工程设置里面,修改 Main Interface ->设置为空
*/
// 1.创建了一个window对象,window的大小是手机屏幕的大小
self.window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds];
// 设置背景颜色
self.window.backgroundColor = [UIColorwhiteColor];
// 让窗口成为主窗口并且可见。 主窗口(能够接收事件的窗口)
[self.windowmakeKeyAndVisible];
#pragma mark - UIView 视图
UIView *baseView = [[UIViewalloc] initWithFrame:CGRectMake(10,200, 300,200)];
baseView.backgroundColor = [UIColorredColor];
// clipsToBounds 默认为NO。设为YES,会裁剪超出视图边界的内容和子视图
baseView.clipsToBounds =YES;
// 给一个视图对象添加子视图
// self.window 会持有子视图的对象所有权
[self.windowaddSubview:baseView];
// 一般情况下, frame和 Bounds宽高一样。特殊情况?
// Frame得到的位置,是以它的父视图为参照
NSLog(@"frame : %@",NSStringFromCGRect(baseView.frame));
// Bounds得到的位置,是以它本身为参照
NSLog(@"bounds : %@",NSStringFromCGRect(baseView.bounds));
// 中点的位置坐标,是相对于父视图来计算的
NSLog(@"center : %@",NSStringFromCGPoint(baseView.center));
// 改变中点,会改变视图的位置
// baseView.center = CGPointMake(260, 400);
- (void)test:(UIView *)testView {
// viewWithTag: 检索视图树,是否有视图的 tag匹配
UIView *searchView = [testViewviewWithTag:3003];
searchView.backgroundColor = [UIColorcyanColor];
testView.hidden =YES;
// 将一个视图从父视图上移除
[testView removeFromSuperview];
// 获取父视图
UIView *superView = searchView.superview;
// 获取所有的子视图
NSArray *subViews = superView.subviews;
NSLog(@"子视图 : %@", subViews);
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- iOS---基本的UI控件
- iOS 基本UI控件
- IOS中UI控件的基本使用
- iOS中的基本 UI 控件的使用
- IOS之基本UI控件
- IOS之基本UI控件
- iOS基本UI控件总结
- iOS中基本UI控件的介绍和使用
- 控件的基本使用-iOS—UI笔记
- ios学习之UI控件的一些基本使用
- iOS 入门之UI基本控件
- iOS-UI-基本控件之UITextField
- iOS-UI-基本控件之UIView
- iOS-UI-基本控件之UISwitch
- iOS-UI-基本控件之UILabel
- iOS-UI-基本控件之UIButton
- iOS-UI-基本控件之UISwitch
- UI UI基本控件
- js循环添加监听器时 只有最后一个有效
- 部署服务器icu4j-2.6.1错误
- set容器的erase
- jmeter进行websocket压力测试
- stressmark压力测试
- iOS---基本的UI控件
- 基于.NET平台的分层架构实战(四)——实体类的设计与实现
- 西安翼迅网络的破解尝试
- spring4 下jackson的配置
- 经典问题之合法括号序列
- spring与mybatis三种整合方法
- 告诉你,你的应用需要隐藏图标,你该怎么做
- 基于.NET平台的分层架构实战(五)——接口的设计与实现
- new操作符