iOS旋转屏幕后,不显示状态栏

iOS默认旋转后,就隐藏状态栏了,所以需要显示,就要开启


     显示状态栏

    [UIApplication sharedApplication].statusBarHidden = NO;


    这个方向根据需求调整方向

    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
状态栏20键盘高度216导航44 最少2位 补0 // UIColor *color2 = [[UIColor alloc] initWithRed:0 green:1 blue:0 alpha:1]; // button setTitle:@"点我吧" forState:UIControlStateNormal]; // [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside]; Target目标 action行动 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; //字体在点击时候的颜色 button.selected=YES;//激活forState:UIControlStateSelected状态 [UIButton buttonWithType:UIButtonTypeRoundedRect];按钮样式 button1.tag = [str intValue]; 标记 //initWithNibName将控制器绑定xib的方法,如果xib的名称和控制器的类名称相同的时候,直接写init(会自动绑定同名的xib)就可以,如果xib的名称和类名称不同的话,必须手动调用此方法来进行绑定 ZYTwoViewController *two=[[ZYTwoViewController alloc]initWithNibName:@"Empty" bundle:nil]; //因为UIImageView的用户可交互性默认是关闭的,所以把按钮放在他身上时,按钮是不能点击的,把可交互性打开以后,按钮就能够被点击 imgView.userInteractionEnabled=YES; enabled授权给 Interaction交互 //将序列帧数组赋给UIImageView的animationImages属性 imageview.animationImages = imageArray; //设置动画时间 imageview.animationDuration = 2; Duration持续时间 //设置动画次数 0 表示无限 imageview.animationRepeatCount = 0; Repeat重复次数 //开始播放动画 [imageview startAnimating]; / //要动画的对象和他的状态 // imageView.frame = CGRectMake(200, 200, 50, 50); // //设置透明度 // imageView.alpha = 0.2; //创建一个window对象,window的frame跟屏幕大小一致 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; Screen 屏 //让window显示屏幕上 [self.window makeKeyAndVisible]; Visible可见的 //得到全局的屏幕对象 UIScreen *screen = [UIScreen mainScreen]; //获得屏幕的大小 CGRect rect = screen.bounds; //判断btn这个指针指向的是UIButton的对象的时候才清空 if([btn isKindOfClass:[UIButton class]]){ [btn removeFromSuperview]; } //判断这个视图是否是他的父视图有 if([_imgView isDescendantOfView:cell]){ [_imgView removeFromSuperview]; } //让键盘放弃第一响应,也就是让textfield不再处于活动状态,键盘就会下去 //resignFirstResponder 这个方法的功能就是让属于textfield的键盘下去 [_textField resignFirstResponder]; resign失去 responder响应 //成为第一响应者 [_textField becomeFirstResponder]; become 变成 //enabled 可用的,textfield 不响应事件 //_salaryField.enabled = NO; // _textField.placeholder = @"请输入您的银行卡账号"; placeholder 占位符 // _textField.keyboardType = UIKeyboardTypeNumberPad; keyboard键盘 /secure 安全 text 文本 entry 输入 //textField.secureTextEntry = YES; //点击键盘的return键绑定当前类对象的down这个方法 //此方法可以有参数,也可以没有参数,如果没有参数系统不会给你穿参数,如果有参数,只能有一个参数,无论你所指定的参数类型是什么,系统只会把tf本身给传过去 [tf addTarget:self action:@selector(down:) forControlEvents:UIControlEventEditingDidEndOnExit]; //因为tag为999的本来就是UITextField类型所以可以强制转换成UITextField类型,如果他本来就不是UITextField,非要强转语法不会报错,但运行时就会出现问题(例如披着羊皮的郎) // UITextField *tf=(UITextField *)[self.window viewWithTag:999]; //让父视图取消编辑会让其身上的所有文本框都取消相应 [self.window endEditing:YES]; //将子视图在前面 [self.window bringSubviewToFront:_taiyang]; //超出这个view的边界的控件不再显示 [_infoView setClipsToBounds:YES]; //UIView 静态方法,开始一个动画 [UIView beginAnimations:nil context:nil]; begin 开始 //animation 动画 duration 间隔时间 [UIView setAnimationDuration:1]; //从当前状态设置动画开始 [UIView setAnimationBeginsFromCurrentState:YES]; //设置动画的重复次数,0表示1次 [UIView setAnimationRepeatCount:MAXFLOAT]; //设置动画的自动反转,出去以后原路返回 [UIView setAnimationRepeatAutoreverses:YES]; //设置动画的效果,慢入慢出 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //只有设置了context,并且设置代理和动画结束后调用的方法,系统会将context传过去 [UIView beginAnimations:nil context:imgView]; //设置代理(委托) [UIView setAnimationDelegate:self]; //设置动画结束以后调用的方法,我们只需要把context设置为imgView,系统就会调用此方法给传参数 [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; -(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{ NSLog(@"1111"); UIImageView *imgView=(UIImageView *)context; [imgView removeFromSuperview]; } //Transition 转换,变换 Curl 卷 //1.动画的样式 //2.要在哪个视图上做动画,一般是动画视图的父视图 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:_window cache:YES]; //commit 提交 [UIView commitAnimations]; //索引为0表示先添加的子视图,跟子视图的tag没有关系 //交换两个子视图的先后位置 [self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; exchange交换 Subview 代替 //remove 移除 from 从 superview 父视图 //把自身从父视图中移除 //[_loginControl removeFromSuperview]; //设置数组容量为0,可变数组随便设置只是个初始化的值 _diJiArr=[[NSMutableArray alloc]initWithCapacity:0]; // CGAffineTransform a = {1,2,3,4,1,1}; //CGAffineTransformMakeRotation 方法的作用就是传进去一个角度(计量单位不是度,是弧度),方法内部帮你生成一个这个角度所对应的旋转矩阵 //rotate 旋转 CGAffineTransform a = CGAffineTransformMakeRotation(-3.1415926 / 2); //在原有imageView.transform的基础上再转多少度 CGAffineTransform c = CGAffineTransformRotate(imageView.transform, 3.1415926 / 2); //scale 缩放 // CGAffineTransform b = CGAffineTransformMakeScale(2, 2); //修改uiview 的矩阵,仿射变换 imageView.transform = a; //设置阴影偏移量(正值往右偏,正值往下偏移) label.shadowOffset=CGSizeMake(5, 10); //在oc中,空对象调用方法或属性不会引起程序报错或崩溃,但是也不会有任何事件发生 // NSString *str = nil; // [str length]; //判断两个字符串是否相等,不能使用==,使用等号是判断两个对象是否是一个对象,也就是是否是一个内存地址。 //判断字符串的内容是否相同应该使用nsstring的isEqualToString:方法 //在低版本的时候,如果直接点击注册按钮,没有点击具体的输入框,得到输入框中的内容为nil,如果点击输入框,但是没有输入任何内容,这个时候点击注册按钮获得的内容为@"".这是系统懒加载的结果。 // if ([registName isEqualToString:@""] || registName == nil) // { // NSLog(@"不能为空"); // return; // } //可以这样写,把上述两种情况都涵盖 //registName.length 获得字符串的长度 if (registName.length <= 0) //获取手指在屏幕上的坐标 UITouch * touch = [touches anyObject]; CGPoint point = [touch locationInView:self.view]; NSLog(@"ppp===%@",NSStringFromCGPoint(point)); CGPoint point=[[touches anyObject] locationInView:self.window]; //判断此时手指在屏幕上的坐标是否在飞机上,也就是说手指是否按在飞机上,如果是的话,改变飞机的中心点坐标到手指的位置上 if(CGRectContainsPoint(_planeView.frame, point)){ _planeView.center=point; } UIActionSheet *action=[[UIActionSheet alloc]initWithTitle:@"提示" delegate:self cancelButtonTitle:@"红" destructiveButtonTitle:@"绿" otherButtonTitles:@"蓝", nil]; [action showInView:self.view]; //弹出框 Alert 警告,alertView是局部变量,他的作用域只在if这个大括号内 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"警告" message:@"用户名不能为空" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil]; //show 展现 ,显示alertview [alertView show]; return; if (![_registPasswordField.text isEqualToString:_registConfirmPasswordField.text]) self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; //frame是相对于其父视图而言的 //bounds是相对于自身而言的,bounds的xy是设置自己坐标系的左上角坐标,会影响其子视图 //一般使用bounds不设置x和y只设置宽和高 //center是相对于其父视图而言的,是CGpoint类型 _vi.bounds=CGRectMake(0, 0, 200, 200); // vi.center=CGPointMake(160, 240); _vi.center=_window.center; //arc4random()%256取一个随机值,随机值的范围为0-255 _vi.backgroundColor=[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1]; 屏幕触发事件 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event TestViewController *test=[[TestViewController alloc]init]; //实际作用就是将test的view放在window上 self.window.rootViewController=test; //initWithNibName将控制器绑定xib的方法,如果xib的名称和控制器的类名称相同的时候,直接写init(会自动绑定同名的xib)就可以,如果xib的名称和类名称不同的话,必须手动调用此方法来进行绑定 ZYTwoViewController *two=[[ZYTwoViewController alloc]initWithNibName:@"Empty" bundle:nil]; self.window.rootViewController=two; //每隔0.05秒调用当前类对象的boFang方法,不传参数,一直重复 _tim=[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(boFang) userInfo:nil repeats:YES]; } scheduled 固定时间 Interval间隔时间 repeats重复 //bool orClose; -(void)btnPress{ // orClose=!orClose; //判断定时器的指针是否存在(定时器的对象是否存在) if(_tim){ //必须在定时器失效以后将定时器的指针至为空 [_tim invalidate]; invalidate使…无效 _tim=nil; }else{ _tim=[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(boFang) userInfo:nil repeats:YES]; } /* int a=5,b=3; //三目运算符 int c=a>b?1:2; //不能深度赋值 //相当于 //imgView.frame.origin.y+=5; if(a>b){ c=1; }else{ c=2; } */ CGRectIntersectsRect(zidan.frame, diji.frame) //有交叉就怎么怎么样 //Activity 活动 Indicator指示器 // UIActivityIndicatorView *ai = [[UIActivityIndicatorView alloc] init]; // ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; // ai.backgroundColor = [UIColor blackColor]; // ai.frame = CGRectMake(100, 200, 100, 100); // ai.hidesWhenStopped = NO; // [_loginControl addSubview:ai]; // [ai startAnimating]; //使用系统的协议方法:1、.h文件实现协议2、.m中设置委托3、.m实现协议方法 //点击alert身上的按钮的时候会调用此方法,并且会传参数 //switch创建对象的时候必须要加{},否则会编译不通过 //表示要实现协议,必须实现方法(什么也不写的情况下,默认是@required) @required -(void)doSomething:(NSString *)str; //表示要实现协议,可以实现也可以不实现方法 @optional -(void)doSomething2; 类相互交叉//告诉系统Man是一个类,此时用到Man不要再报错了,但是是不知道这个类有什么属性,和什么方法的 @class Man; //又因为.m中要用到属性和方法,所以仅仅用@class不行,再在.m中导入一下#import "Man.h" #import "Man.h" // MyView*vi=[[MyView alloc]initWithFrame:CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>)] NSLog(@"111111"); //系统的init方法会去调用initwithFrame方法,此时的frame是0,0,0,0,所以无法确定按钮的位置 // MyView *vi=[[MyView alloc]init]; // MyView *vi=[[MyView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)]; /* 1.找到应用程序的委托对象,这个对象的window就是手机屏幕显示的window ZYAppDelegate *app=[UIApplication sharedApplication].delegate; app.window.rootViewController=reg; 2.因为委托对象的window是应用程序的主窗口,所以我们通过应用程序的对象调用keyWindow也可以找到手机屏幕显示的widow [UIApplication sharedApplication].keyWindow.rootViewController=reg; */ 7T5A59~4UDE99@OU)WN0T`6.jpg ¬ //延时函数,调用refreash方法,传递参数,让这个方法在0.1秒以后调用 [self performSelector:@selector(refreash:) withObject:pickerView afterDelay:.1]; //只要控制器的视图将要显示都会执行此方法,所以这个方法不止执行一次 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:YES]; } -(void)viewDidDisappear:(BOOL)animated{ [super viewWillAppear:YES]; } //这2个方法都是不止执行一次 pickerView //设置pickerView分为几个区,此方法有一个参数,即设置的pickView - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ NSLog(@"分区%d",pickerView.tag); //返回值是设置一共多少个区的 return 2; } //设置pickerView每个区分多少行,此方法有两个参数,分别为设置的哪个pickView和要设置的是哪个区 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ NSLog(@"分行%d",pickerView.tag); if(component==0){ //返回值设置每个区的行数 return [_leftArr count]; } return [_rightArr count]; } //设置哪个pickView的哪个区的哪一行是什么标题, - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ if(component==0){ //返回值设置每个行显示的内容 return [_leftArr objectAtIndex:row]; } return [_rightArr objectAtIndex:row]; } /当选中pickView某个区的某一行的时候会调用,第一个参数表示当前选择的是哪个pickView,第二个参数表示选择的是哪一行,第三个参数表示的是选择的哪一个区 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ NSString *leftStr=nil; NSString *rightStr=nil; if(component==0){ leftStr=[_leftArr objectAtIndex:row]; int rightRow=[pickerView selectedRowInComponent:1]; rightStr=[_rightArr objectAtIndex:rightRow]; }else{ rightStr=[_rightArr objectAtIndex:row]; int leftRow=[pickerView selectedRowInComponent:0]; leftStr=[_leftArr objectAtIndex:leftRow]; } NSString *message=[NSString stringWithFormat:@"左边为:%@,右边为%@",leftStr,rightStr]; [[[UIAlertView alloc] initWithTitle:@"提示" message:message delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil] show];CocoaLigature1 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ if(component==0){ //延时函数,调用refreash方法,传递参数,让这个方法在0.1秒以后调用 [self performSelector:@selector(refreash:) withObject:pickerView afterDelay:.1]; } } -(void)refreash:(UIPickerView *)pickerView{ [pickerView reloadComponent:1]; //加载每行相对应的行里的内容 [pickerView selectRow:0 inComponent:1 animated:YES]; }CocoaLigature1 UIDatePicker //UIDatePicker是处理时间的一个控件,继承于UIControl ,UIPickView继承于UIView,两者没有直接联系 UIDatePicker *pick=[[UIDatePicker alloc]initWithFrame:CGRectMake(0, 0, 320, 240)]; pick.tag=98; //控件的4种样式 pick.datePickerMode=UIDatePickerModeDateAndTime; //[NSDate date]获取当前日期 //pick.minimumDate=[NSDate date]; //显示多久以后的日期 pick.minimumDate=[NSDate dateWithTimeInterval:5*60*60 sinceDate:[NSDate date]]; [pick addTarget:self action:@selector(getTime:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:pick]; } -(void)getTime:(UIDatePicker *)pick{ NSDate *date=[pick date]; //格式化日期类,用这个类将nsdate转换成nsstring,也可以按反向转换 NSDateFormatter *formater=[[NSDateFormatter alloc]init]; //设置上午下午标示符,默认是上午和下午 [formater setAMSymbol:@"morning"]; [formater setPMSymbol:@"evening"]; //yyyy表示年 MM表示月 dd表示日 eeee表示星期几 HH表示24时制得小时,hh表示12时制得小时,mm表示分钟,ss表示秒 a表示上午下午 [formater setDateFormat:@"yyyy年MM月dd日 eeee hh:mm:ss a"]; NSString *str=[formater stringFromDate:date]; NSLog(@"%@",str); } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSString *str=@"2015年06月10日 08:53:52"; NSDateFormatter *formater=[[NSDateFormatter alloc]init]; [formater setDateFormat:@"yyyy年MM月dd日 hh:mm:ss"]; ((UIDatePicker *)[self.view viewWithTag:98]).date=[formater dateFromString:str]; ck];CocoaLigature1 UIScrollView //设置内容大小 sc.contentSize=CGSizeMake(200*8, 200); //设置成单页滑动 sc.pagingEnabled=YES; //设置内容偏移量 sc.contentOffset=CGPointMake(200, 0); //设置水平滚动条是否显示 sc.showsHorizontalScrollIndicator=NO; //设置垂直滚动条是否显示 sc.showsVerticalScrollIndicator=NO; //因为此时我们没有用手拨动,所以这个方法不会调用 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ NSLog(@"1111"); int num= scrollView.contentOffset.x/200; UIPageControl *page=(UIPageControl *)[self.view viewWithTag:2]; page.currentPage=num; } //只要scrollView发生偏移就会调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ _pageControl.currentPage=_topView.contentOffset.x/320; } // self.automaticallyAdjustsScrollViewInsets=NO; //因为当前的控制器在导航器中,又在这个控制器的view身上先放的是UIScrollView,就会导致所有放在这个UIScrollView身上的空间向下偏移 //两种解决方法:1、不先放置这个UIScrollView //2、将控制器的automaticallyAdjustsScrollViewInsets这个属性设置成NO UIPageControl //设置page有多少页 page.numberOfPages=8; //设置page的当前页,索引从0开始 page.currentPage=1; //设置点的颜色 page.pageIndicatorTintColor=[UIColor redColor]; //设置当前页的点对应的颜色 -(void)change:(UIPageControl *)page{ int num=page.currentPage; UIScrollView *sc=(UIScrollView *)[self.view viewWithTag:1]; //sc.contentOffset=CGPointMake(200*num, 0); [sc setContentOffset:CGPointMake(200*num, 0) animated:YES]; } 导航栏 //压栈,出栈 ZYOneViewController *one=[[ZYOneViewController alloc]init]; //创建一个导航器,并且指定他的根控制器 //导航栏高度44 UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one]; self.window.rootViewController=nav;CocoaLigature1 //这是控制器的属性,对这个属性赋值,并不会影响导航器的所有返回按钮,只是代表,当这个控制器在导航器中显示的时候,导航栏上的项目 self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"回去" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)]; 模态跳转 -(void)gotoNext{ ZYThreeViewController *three=[[ZYThreeViewController alloc]init]; //设置翻转动画,是枚举类型 three.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal; //控制器与控制器之间跳转,模态跳转 [self presentViewController:three animated:YES completion:nil]; } - (IBAction)goBack:(UIButton *)sender { [self dismissViewControllerAnimated:YES completion:nil]; } //a模态b(a和b都不在导航其中)那么 //a的presentedViewController就是b //b的presentingViewController就是a UIWebView _web=[[UIWebView alloc]initWithFrame:CGRectMake(0, 74, 320, 430-44)]; //设置自适应大小 _web.scalesPageToFit=YES; [self.view addSubview:_web]; [_web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_urlArr[num-1]]]]; NSDictionary 字典 NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:btn.titleLabel.font,NSFontAttributeName, nil]; float width= [_titleArr[num-1] sizeWithAttributes:dic].width; UITableView 用TableViewController创建 //注册单元格,表示此单元格可以被重复使用 [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; tab=[[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain]; 用ViewController创建 _tab.delegate=self; _tab.dataSource=self; //设置单元格点击状态为无 cell.selectionStyle = UITableViewCellSelectionStyleNone; //设置单元格的样式为无 _tab.separatorStyle = UITableViewCellSeparatorStyleNone; //设置单元格的行高,在此设置会导致所有的行高都为80 _tab.rowHeight=80; [self.view addSubview:_tab]; //方法的返回值就是设置这个表有多少个区的,默认是1个区 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 2; } //设置特定的行高,当两者都设置时,以此为准 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 40; } //设置某个区的行数,方法有两个参数,第一个参数就是设置委托的表,第二个参数就是要设置的是哪个区,此方法的返回值表示要设置这个区的行数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 5*(section+1); } //设置区头标题 -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return [NSString stringWithFormat:@"第%d区",section]; } //设置区头的高 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 30; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //设置一个重用标示符 static NSString *cellIndentifier=@"cell"; //每次代码执行的时候先从tableView的重用队列里面去寻找有没有可以重复使用的单元格 UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIndentifier]; //如果没有找到可以重用的单元格,那么就去创建单元格 if(!cell){ cell=[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIndentifier]autorelease]; //把每个单元格共有的东西放在此处 cell.detailTextLabel.text=@"你好"; cell.imageView.image=[UIImage imageNamed:@"c_item0.jpg"]; //按钮样式 cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator; //设置单元格选择样式 cell.selectionStyle=UITableViewCellSelectionStyleNone; } //把每个单元格不同的东西放在此处 cell.textLabel.text=[NSString stringWithFormat:@"第%d区,第%d行",indexPath.section,indexPath.row]; return cell; } xib //获取资源目录,加载xib文件,返回值类型为数组,数组中存放的是xib中除了fileOwner 和firstResponder以外的控件 cell= [[NSBundle mainBundle] loadNibNamed:@"ZYMyTwoTableViewCell" owner:nil options:nil][0]; MyTableViewCell *cell=(MyTableViewCell *)btn.superview.superview.superview; //通过单元格找到其对应的indexPath对象 NSIndexPath *indexPath=[_tab indexPathForCell:cell]; 分线程 //开启一个线程调用当前对象的update2方法,不传参数,当update2方法执行完成后分线程就结束了 [NSThread detachNewThreadSelector:@selector(update2) toTarget:self withObject:nil]; //因为分线程中不能直接改变UI,所以要从分线程中调到主线程去修改UI //回到主线程去执行其refreshUI这个方法,yes表示先阻碍当前的分线程,等到主线程的refreshUI这个方法执行完成后,回到分线程 //NO表示不等到主线程完成后才回来 [self performSelectorOnMainThread:@selector(refreshUI) withObject:nil waitUntilDone:YES]; 有时候配合延迟函数使用 [NSThread sleepForTimeInterval:.05];
常用代码整理: 12.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex]; return [emailTest evaluateWithObject:email]; } 13.图片压缩 用法:UIImage *yourImage= [self imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)]; //压缩图片 - (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize { // Create a graphics image context UIGraphicsBeginImageContext(newSize); // Tell the old image to draw in this newcontext, with the desired // new size [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; // Get the new image from the context UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); // End the context UIGraphicsEndImageContext(); // Return the new image. return newImage; } 14.亲测可用的图片上传代码 - (IBAction)uploadButton:(id)sender { UIImage *image = [UIImage imageNamed:@"1.jpg"]; //图片名 NSData *imageData = UIImageJPEGRepresentation(image,0.5);//压缩比例 NSLog(@"字节数:%i",[imageData length]); // post url NSString *urlString = @"http://192.168.1.113:8090/text/UploadServlet"; //服务器地址 // setting up the request object now NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; [request setURL:[NSURL URLWithString:urlString]]; [request setHTTPMethod:@"POST"]; // NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data;boundary=%@",boundary]; [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; // NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithString:@"Content-Disposition:form-data; name=\"userfile\"; filename=\"2.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; //上传上去的图片名字 [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[NSData dataWithData:imageData]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [request setHTTPBody:body]; // NSLog(@"1-body:%@",body); NSLog(@"2-request:%@",request); NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; NSLog(@"3-测试输出:%@",returnString); 15.给imageView加载图片 UIImage *myImage = [UIImage imageNamed:@"1.jpg"]; [imageView setImage:myImage]; [self.view addSubview:imageView]; 16.对图库的操作 选择相册: UIImagePickerControllerSourceTypesourceType=UIImagePickerControllerSourceTypeCamera; if (![UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { sourceType=UIImagePickerControllerSourceTypePhotoLibrary; } UIImagePickerController * picker = [[UIImagePickerControlleralloc]init]; picker.delegate = self; picker.allowsEditing=YES; picker.sourceType=sourceType; [self presentModalViewController:picker animated:YES]; 选择完毕: -(void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissModalViewControllerAnimated:YES]; UIImage * image=[info objectForKey:UIImagePickerControllerEditedImage]; [self performSelector:@selector(selectPic:) withObject:imageafterDelay:0.1]; } -(void)selectPic:(UIImage*)image { NSLog(@"image%@",image); imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); [self.viewaddSubview:imageView]; [self performSelectorInBackground:@selector(detect:) withObject:nil]; } detect为自己定义的方法,编辑选取照片后要实现的效果 取消选择: -(void)imagePickerControllerDIdCancel:(UIImagePickerController*)picker { [picker dismissModalViewControllerAnimated:YES]; } 17.跳到下个View nextWebView = [[WEBViewController alloc] initWithNibName:@"WEBViewController" bundle:nil]; [self presentModalViewController:nextWebView animated:YES]; //创建一个UIBarButtonItem右边按钮 UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)]; [self.navigationItem setRightBarButtonItem:rightButton]; 设置navigationBar隐藏 self.navigationController.navigationBarHidden = YES;// iOS开发之UIlabel多行文字自动换行 (自动折行) UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(10, 100, 300, 180)]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 150)]; label.text = @"Hello world! Hello world!Hello world! Hello world! Hello world! Hello world! Hello world! Hello world!Hello world! Hello world! Hello world! Hello world! Hello world! Helloworld!"; //背景颜色为红色 label.backgroundColor = [UIColor redColor]; //设置字体颜色为白色 label.textColor = [UIColor whiteColor]; //文字居中显示 label.textAlignment = UITextAlignmentCenter; //自动折行设置 label.lineBreakMode = UILineBreakModeWordWrap; label.numberOfLines = 0; 30.代码生成button CGRect frame = CGRectMake(0, 400, 72.0, 37.0); UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = frame; [button setTitle:@"新添加的按钮" forState: UIControlStateNormal]; button.backgroundColor = [UIColor clearColor]; button.tag = 2000; [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; 31.让某个控件在View的中心位置显示: (某个控件,比如label,View)label.center = self.view.center; 32.好看的文字处理 以tableView中cell的textLabel为例子: cell.backgroundColor = [UIColorscrollViewTexturedBackgroundColor]; //设置文字的字体 cell.textLabel.font = [UIFont fontWithName:@"AmericanTypewriter" size:100.0f]; //设置文字的颜色 cell.textLabel.textColor = [UIColor orangeColor]; //设置文字的背景颜色 cell.textLabel.shadowColor = [UIColor whiteColor]; //设置文字的显示位置 cell.textLabel.textAlignment = UITextAlignmentCenter; 33. ———————-隐藏Status Bar—————————– 读者可能知道一个简易的方法,那就是在程序的viewDidLoad中加入 [[UIApplication sharedApplication]setStatusBarHidden:YES animated:NO]; 33. 更改AlertView背景 UIAlertView *theAlert = [[[UIAlertViewalloc] initWithTitle:@"Atention" message: @"I'm a Chinese!" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay",nil] autorelease]; [theAlert show]; UIImage *theImage = [UIImageimageNamed:@"loveChina.png"]; theImage = [theImage stretchableImageWithLeftCapWidth:0topCapHeight:0]; CGSize theSize = [theAlert frame].size; UIGraphicsBeginImageContext(theSize); [theImage drawInRect:CGRectMake(5, 5, theSize.width-10, theSize.height-20)];//这个地方的大小要自己调整,以适应alertview的背景颜色的大小。 theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); theAlert.layer.contents = (id)[theImage CGImage]; 34. 键盘透明 textField.keyboardAppearance = UIKeyboardAppearanceAlert; 状态栏的网络活动风火轮是否旋转 [UIApplication sharedApplication].networkActivityIndicatorVisible,默认值是NO。 35截取屏幕图片 //创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400) UIGraphicsBeginImageContext(CGSizeMake(200,400)); //renderInContext 呈现接受者及其子范围到指定的上下文 [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; //返回一个基于当前图形上下文的图片 UIImage *aImage = UIGraphicsGetImageFromCurrentImageContext(); //移除栈顶的基于当前位图的图形上下文 UIGraphicsEndImageContext(); //以png格式返回指定图片的数据 imageData = UIImagePNGRepresentation(aImage); 36更改cell选中的背景 UIView *myview = [[UIView alloc] init]; myview.frame = CGRectMake(0, 0, 320, 47); myview.backgroundColor = [UIColorcolorWithPatternImage:[UIImage imageNamed:@"0006.png"]]; cell.selectedBackgroundView = myview; 37显示图像: CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f); UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; [myImage setImage:[UIImage imageNamed:@"myImage.png"]]; myImage.opaque = YES; //opaque是否透明 [self.view addSubview:myImage]; 38.能让图片适应框的大小(没有确认) NSString*imagePath = [[NSBundle mainBundle] pathForResource:@"XcodeCrash"ofType:@"png"]; UIImage *image = [[UIImage alloc]initWithContentsOfFile:imagePath]; UIImage *newImage= [image transformWidth:80.f height:240.f]; UIImageView *imageView = [[UIImageView alloc]initWithImage:newImage]; [newImagerelease]; [image release]; [self.view addSubview:imageView]; 39.实现点击图片进行跳转的代码:生成一个带有背景图片的button,给button绑定想要的事件! UIButton *imgButton=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 120, 120)]; [imgButton setBackgroundImage:(UIImage *)[self.imgArray objectAtIndex:indexPath.row] forState:UIControlStateNormal]; imgButton.tag=[indexPath row]; [imgButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值