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.jpegthin@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




1 0
原创粉丝点击