不知不觉一年多了,该好好整理啦!亡羊补牢,希望为时不晚
//
// 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 {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//通过tag值查找view
UIView *myView1 = [self.view viewWithTag: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 = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, kScreenWidth, 200)];
#warning 要先设置内容,才能自适应.而且自适应,要写在行数设置后面
// 内容自适应
// [textLabel sizeToFit];
// 设置内容
textLabel.text = @"Talk is cheap, show me the Code. 废话少说,放码过来";
textLabel.backgroundColor = [UIColor orangeColor];
// 行数设置,默认为1 单行显示。 0 表示行数没有限制,在足够的高度之下,换行显示
textLabel.numberOfLines = 0;
// 设置文本的打断方式 Mode 模式、 style 样式, type 类型
textLabel.lineBreakMode = NSLineBreakByTruncatingMiddle;
// 设置文本颜色
textLabel.textColor = [UIColor grayColor];
// 设置阴影颜色
textLabel.shadowColor = [UIColor blackColor];
// 设置阴影的偏移量 (水平位置,垂直位置)
textLabel.shadowOffset = CGSizeMake(3, 3);
// 设置文本的对齐方式
textLabel.textAlignment = NSTextAlignmentCenter;
// 设置字体
// textLabel.font = [UIFont systemFontOfSize:28];
// textLabel.font = [UIFont boldSystemFontOfSize:28];
textLabel.font = [UIFont italicSystemFontOfSize:28];
// 内容自适应
[textLabel sizeToFit];
textLabel.tag = 101;
// 设置文本特殊状态下的显示效果
textLabel.highlightedTextColor = [UIColor redColor];
[self.view addSubview:textLabel];
// 测试高亮状态
// [self performSelector:@selector(test:) withObject:textLabel afterDelay:2];
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(test:) userInfo:nil repeats:YES];
}
- (void)test:(NSTimer *)timer {
UILabel *textLabel = (UILabel *)[self.view viewWithTag:101];
textLabel.highlighted = !textLabel.highlighted; // 设置高亮状态
}
- (void)viewDidLoad1 {
[super viewDidLoad];
#pragma mark UIImageView 图像视图
// 作用: 显示单个图片,或者一组动画图片
// ----------------- 显示单张图片 ------------------
// 初始化UIImage 对象
// 图片拥有 thin.jpeg、thin@2x.jpeg、 thin@3x.jpeg
// 图片倍数可以省略。
// 图片的 扩展名,如果是 ".png"可以省略
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(35, 100, 300, 300)];
imgView.backgroundColor = [UIColor orangeColor];
imgView.image = [UIImage imageNamed:@"thin.jpeg"];
[self.view addSubview:imgView];
// 设置图片 内容显示模式
/**
* UIViewContentModeScaleToFill, 拉伸铺满视图
UIViewContentModeScaleAspectFit, 自适应拉伸,不破坏宽高比例
UIViewContentModeScaleAspectFill, 可以超出视图范围,不破环比例
*
*/
imgView.contentMode = UIViewContentModeTopLeft;
imgView.clipsToBounds = YES;
// 设置图像视图的高亮状态
imgView.highlightedImage = [UIImage imageNamed:@"image"];
#pragma mark UIButton
#warning 自定按钮,设置图片方法的区别
// UI设计师, 美工
// 自定义按钮,首先要把按钮的类型 设置为 Custom 自定义类型
// setBackgroundImage: 会拉伸图片,但是不会影响标题显示
// setImage: 会使用图片的原始大小,但是会干扰标题的显示
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(160, 10, 60, 44);
// 1.设置按钮的标题
// 设置标题的颜色
[button setTitleColor:[UIColor greenColor] 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:[UIImage imageNamed:@"playing_btn_love"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor"] forState:UIControlStateSelected];
// 设置背景图片,图片会被拉伸,并且是被 标题盖住
[button setBackgroundImage:[UIImage imageNamed:@"playing_btn_love"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h"] forState:UIControlStateHighlighted];
[button setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor"] forState:UIControlStateSelected];
// 如果出现 unrecognized selector sent to instance 异常原因
// 可以查找该是否实现了
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[imgView addSubview:button];
// 开启用户事件. 如果设置为NO,表示不响应,且视图所有子视图,都无法响应事件
imgView.userInteractionEnabled = YES;
// 添加tag
imgView.tag = 110;
// 为按钮添加触摸事件
/*
UIControlEventTouchDown 用户按下手指
UIControlEventTouchDownRepeat 重复按下
UIControlEventTouchDragInside 在内部拖拽
UIControlEventTouchUpInside 用户触摸并且在范围之内抬起手指
UIControlEventTouchCancel 触摸取消 : 一次没有结束,屏幕失去了焦点
*/
[button addTarget:self action:@selector(buttonAction1:) forControlEvents:UIControlEventTouchUpInside];
//设置button的边框
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(20, 100, 200, 30)];
[btn.layer setBorderWidth:1.0];//边框宽度
[btn.layer setBorderColor:[UIColor blackColor].CGColor];//设置边框颜色
[self.view addSubview:btn];
}
- (void)buttonAction1:(UIButton *)sender {
// 切换按钮的选中状态
sender.selected = !sender.selected;
}
- (void)buttonAction:(UIButton *)sender {
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:110];
imageView.highlighted = !imageView.highlighted;
}
#pragma mark - UISlider滑块
- (void)viewDidLoad2 {
[super viewDidLoad];
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(10, 100, 310, 200)];
slider.backgroundColor = [UIColor orangeColor];
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:slider];
// 设置滑块的最小值
slider.minimumValue = 0;
// 设置滑块的最大值
slider.maximumValue = 100;
// 设置当前值
slider.value = 0.5;
// 定制样式
// 设置轨迹 颜色
slider.minimumTrackTintColor = [UIColor greenColor];
slider.maximumTrackTintColor = [UIColor orangeColor];
// slider setMaximumTrackImage:<#(UIImage *)#> forState:<#(UIControlState)#>
// slider setMinimumTrackImage:<#(UIImage *)#> forState:<#(UIControlState)#>
// 设置大头针颜色
// [slider setThumbTintColor:[UIColor redColor]];
// 设置大头针图片
[slider setThumbImage:[UIImage imageNamed:@"playing_slider_thumb"] forState:UIControlStateNormal];
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeAction:) userInfo:slider repeats:YES];
}
- (void)timeAction:(NSTimer *)sender {
_index++;
UISlider *slider = sender.userInfo;
// slider.value = _index;
[slider setValue:_index animated:YES];
// if (_index == ?) {
// [sender invalidate];
// }
}
- (void)sliderAction:(UISlider *)sender {
// sender.value 默认为 0-1
NSLog(@"value = %f", sender.value);
}
#pragma mark - 属性动画
- (void)testAnimation2 {
// Block语法动画
//1.翻转效果
[UIView animateWithDuration:1.0 animations:^{
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:_myView cache:YES];
// 交换两个 子视图的层次结构
[_myView exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
}];
//2.view从屏幕外进入到屏幕中
_myView.frame = CGRectMake(0, kScreenHeight, 320, 200);
[UIView animateWithDuration:0.5 animations:^{
_myView.frame = CGRectMake(0, kScreenHeight - 200, 320, 200);
}];
}
- (void)testAnimation1 {
// ----------------首尾式动画-------------------//
// 1.标记动画的开始
[UIView beginAnimations:nil context:nil];
// 2.设置动画的属性
[UIView setAnimationDuration:2.0]; // 设置动画的持续时间
[UIView setAnimationRepeatCount:100];//动画重复次数
[UIView setAnimationRepeatAutoreverses:YES];//重头播放一次
// 3.设置动画执行的操作
_myView.backgroundColor = [UIColor blueColor];
_myView.alpha = 0.5;
CGRect frame = _myView.frame;
frame.size.height = 300;
_myView.frame = frame;
// 设置翻转效果:只是视觉效果,并不是一个真正 立体的事物发生了翻转
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:_myView cache:YES];
// 交换两个 子视图的层次结构
[_myView exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
// 4.标记动画的结尾
[UIView commitAnimations];
}
#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 = [UIColor colorWithRed:(rand() % 10 * 0.1) green:(rand() % 10 * 0.1) blue:(rand() % 10 * 0.1) alpha:1.0];
color = [UIColor colorWithWhite:0.5 alpha:0.8];
self.myView.backgroundColor = randColor;
//转换16进制颜色
NSString *background_color = @"#e6e6e6";
long red = strtoul([[background_color substringWithRange:NSMakeRange(1, 2)]UTF8String], 0, 16);
long green = strtoul([[background_color substringWithRange:NSMakeRange(3, 2)]UTF8String], 0, 16);
long blue = strtoul([[background_color substringWithRange:NSMakeRange(5, 2)]UTF8String], 0, 16);
// NSLog(@"%ld — %ld —%ld",red ,green ,blue);
self.myView.backgroundColor = [UIColor colorWithRed: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 = [[UIView alloc] initWithFrame:CGRectMake(x, y, kAppViewW, kAppViewH)];
appView.backgroundColor = [UIColor redColor];
[self.view addSubview:appView];
}
}
#pragma mark-遍历字符串
-(void)forinStr{
NSString *newStr = @"AbdcdddccddA00";
NSString *temp = nil;
for(int i =0; i < [newStr length]; i++)
{
temp = [newStr substringWithRange:NSMakeRange(i, 1)];
if ([temp isEqualToString:@"A"]) {
NSLog(@"第%d个字是:%@", i, temp);
}
}
NSString *str = @"Abdcdddccdd00";
for(int i = 0; i < [newStr length]; i++)
{
unichar temp = [str characterAtIndex: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;
}
}
*/
//原始字符串切分
//MERCID OPRNO
NSString *urlStr=@"http://172.16.49.224:7087/info/wap/qrcodepay/downloadclient.html?MERC_ID=888009941110054&USR_OPR_NO=1025497115";
NSArray *compTemp = [urlStr componentsSeparatedByString:@"?"];
NSString *myQuery = [compTemp lastObject];
NSArray *myQueryElements = [myQuery componentsSeparatedByString:@"&"];
NSString *MERCIDtemp = [myQueryElements objectAtIndex:0];
NSArray *keyVal1 = [MERCIDtemp componentsSeparatedByString:@"="];
NSString *MERCIDStr = [keyVal1 lastObject];
NSString *OPRNOtemp = [myQueryElements lastObject];
NSArray *keyVal2 = [OPRNOtemp componentsSeparatedByString:@"="];
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 = [NSURLComponents componentsWithString:myURL];
NSNumber *pageOneValue = nil;
NSNumber *pageTwoValue = nil;
for(NSURLQueryItem *item in components.queryItems)
{
if([item.name isEqualToString:@"MERC_ID"]){
pageOneValue = [NSNumber numberWithInteger:item.value.integerValue];
}
if ([item.name isEqualToString:@"USR_OPR_NO"]){
pageTwoValue = [NSNumber numberWithInteger:item.value.integerValue];
}
}
}
#pragma mark - 创建导航控制器(AppDelegate里面进行的)
rootViewController *roorVC = [[rootViewController alloc] init];
UINavigationController *navigationCtrl = [[UINavigationController alloc] initWithRootViewController:roorVC];
self.window.rootViewController = navigationCtrl;
#pragma mark - 窗口
/**
* Xcode 6.0 版本之前,空的应用程序模板,没有 main.storyboard 主界面,也没有创建好窗口。
*
* 需要使用这样的纯代码设置,需要删除 main.storyboard, ViewController
* 并且在工程设置里面,修改 Main Interface -> 设置为空
*/
// 1.创建了一个window对象,window的大小是手机屏幕的大小
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 设置背景颜色
self.window.backgroundColor = [UIColor whiteColor];
// 让窗口成为主窗口并且可见。 主窗口(能够接收事件的窗口)
[self.window makeKeyAndVisible];
#pragma mark - UIView 视图
UIView *baseView = [[UIView alloc] initWithFrame:CGRectMake(10, 200, 300, 200)];
baseView.backgroundColor = [UIColor redColor];
// clipsToBounds 默认为NO。设为YES,会裁剪超出视图边界的内容和子视图
baseView.clipsToBounds = YES;
// 给一个视图对象 添加子视图
// self.window 会持有子视图的对象所有权
[self.window addSubview: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 = [testView viewWithTag:3003];
searchView.backgroundColor = [UIColor cyanColor];
testView.hidden = YES;
// 将一个视图从父视图上移除
[testView removeFromSuperview];
// 获取父视图
UIView *superView = searchView.superview;
// 获取所有的子视图
NSArray *subViews = superView.subviews;
NSLog(@"子视图 : %@", subViews);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
本文详细介绍了iOS开发中常用的UI控件配置方法及属性动画实现技巧,包括UILabel、UIButton、UISlider等控件的使用及颜色设置、动画效果等。
493

被折叠的 条评论
为什么被折叠?



