UIView、Table、TabBar、Navigation等小功能集锦
来源:互联网 发布:db2执行sql脚本 编辑:程序博客网 时间:2024/05/02 00:21
一、禁止横屏旋转1、#pragma mark - 禁止横屏-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { returnUIInterfaceOrientationMaskPortrait;}2、//自动旋转- (BOOL)shouldAutorotate { returnNO;}//支持的屏幕转向- (UIInterfaceOrientationMask)supportedInterfaceOrientations{ //使用 UIInterfaceOrientationPortrait横屏播放视频结束后,app依然横屏,而table回到竖屏,不与app保持一致 //return UIInterfaceOrientationPortrait; //使用 UIInterfaceOrientationMaskPortrait横屏播放视频结束后,app与table一起回到竖屏,保持了一致 returnUIInterfaceOrientationMaskPortrait;}二、TabBarController1、这个控制器是tableviewcontroller,当后续页面直接用pop返回root时,需要删除自带的tabbar-(void)viewWillLayoutSubviews{ [superviewWillLayoutSubviews]; for (UIView *childinself.tabBarController.tabBar.subviews) { if ([childisKindOfClass:NSClassFromString(@"UITabBarButton")]) { [child removeFromSuperview]; } }}for (UIView *childinself.tabBarController.tabBar.subviews) { if ([childisKindOfClass:[UIControlclass]]) { [child removeFromSuperview]; } }2、隐藏底部tabbar//1.设置self.tabBarController.tabBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; //2.如果在push跳转时需要隐藏tabBar,设置self.hidesBottomBarWhenPushed=YES;三、NavigationController1、设置导航条颜色nav.navigationBar.barTintColor=[UIColorredColor];[self.navigationController.navigationBarsetBarTintColor:COLOR_S_WHITE];2、设置给定控制状态标题的文本属性 [self.navigationController.navigationBarsetTitleTextAttributes:[NSDictionarydictionaryWithObjectsAndKeys:COLOR_S_BLACK,NSForegroundColorAttributeName,nil]];3、隐藏导航条self.navigationController.navigationBarHidden =NO;4、navigationBar的毛玻璃效果 。translucent设置为YES时,导航栏呈现半透明效果iOS7之后由于navigationBar.translucent默认是YES,坐标零点默认在(0,0)点 当不透明的时候,零点坐标在(0,64);如果你想设置成透明的,而且还要零点从(0,64)开始,那就添加:self.edgesForExtendedLayout = UIRectEdgeNone; self.navigationController.navigationBar.translucent = YES;5、// 隐藏导航栏下方的分割线 [self.navigationController.navigationBarsetBackgroundImage:[[UIImagealloc]init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBarsetShadowImage:[UIImagenew]];6、设置导航条的字体颜色nav.navigationBar.titleTextAttributes=[NSDictionarydictionaryWithObject:[UIColorredColor]forKey:NSForegroundColorAttributeName];//导航标题字颜色 [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : COLOR_S_WHITE}];四、TableView1、table的滚动self.tableView.scrollEnabled =NO; //设置tableview 不能滚动2、table一键回到顶部(1)[self.tableView setContentOffset:CGPointMake(0, 0) animated:YES]; (本人使用这个奏效)(2)- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;(3)设置scrollsToTop = YES;这个属性,点击状态栏就可以返回顶部了。3、设置cell不可编辑table.allowsSelection =NO;4、scrollView滑动时键盘消失属性;(ios7版本才有) _table.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;五、UIScrollView1、设置导航栏下的空白位置是否自动下移//根据状态栏、导航栏、底部栏自动调节导航栏以下空白是否下移 self.automaticallyAdjustsScrollViewInsets =NO;2、scrollView滑动时键盘消失属性;(ios7版本才有) _table.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 六、UIButton1、设置控件边框颜色以及宽度btn.layer.borderColor = [UIColorredColor].CGColor;btn.layer.borderWidth =1;2.设置UIButton的文字显示位置、字体的大小、字体的颜色 //设置按钮上的自体的大小 //[btn setFont: [UIFont systemFontSize: 14.0]]; //这种可以用来设置字体的大小,但是可能会在将来的SDK版本中去除改方法 //应该使用 btn.titleLabel.font = [UIFont systemFontOfSize: 14.0]; tvnamelabel=[[UIButton alloc]initWithFrame:CGRectMake(5,5,200,40)]; 这样初始化的button,文字默认颜色是白色的,所有如果背景也是白色的话,是看不到文字的, btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft ;//设置文字位置,现设为居左,默认的是居中 有些时候我们想让UIButton的title居左对齐,我们设置 btn.textLabel.textAlignment = UITextAlignmentLeft 是没有作用的,我们需要设置 btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; 但是问题又出来,此时文字会紧贴到做边框,我们可以设置 btn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 0); 使文字距离做边框保持10个像素的距离。 设置UIButton上字体的颜色设置UIButton上字体的颜色,不是用: [btn.titleLabel setTextColor:[UIColorblackColor]]; btn.titleLabel.textColor=[UIColor redColor]; 而是用: [btn setTitleColor:[UIColor blackColor]forState:UIControlStateNormal];七、UILabel给所有view设置圆角 给圆角view加阴影,传统加阴影的方法是不行的, 传统的方法就是: avatarImageView.layer.shadowColor = [UIColor blackColor].CGColor; avatarImageView.layer.shadowOffset = CGSizeMake(0, 1); avatarImageView.layer.shadowOpacity = 1;因为setMasksToBounds表示对frame外的内容进行了裁减,只可显示frame内的内容。由于这种方法加的阴影在frame外,所以被裁减了。 传统方法不行,那我们可以把圆角的avatarImageView放到一个大小与它一样的的UIView中,让这个view有阴影,那效果看起来就一样了。 CGRect rect = CGRectMake(0, 0, 48, 48); avatarImageView = [[UIImageView alloc] initWithFrame:rect]; avatarImageView.image = [UIImage imageNamed:@"test.png"]; //Round the corners CALayer * layer = [avatarImageView layer]; [layer setMasksToBounds:YES]; [layer setCornerRadius:9.0]; //Add a shadow by wrapping the avatar into a container UIView * shadow = [[UIView alloc] initWithFrame: rect]; avatarImageView.frame = CGRectMake(0,0,rect.size.width, rect.size.height); // setup shadow layer and corner shadow.layer.shadowColor = [UIColor grayColor].CGColor; shadow.layer.shadowOffset = CGSizeMake(0, 1); shadow.layer.shadowOpacity = 1; shadow.layer.shadowRadius = 9.0; shadow.layer.cornerRadius = 9.0; shadow.clipsToBounds = NO; // combine the views [shadow addSubview: avatarImageView]; [self.view addSubView:shadow];//设置圆角 view.layer.cornerRadius = height /2; view.layer.masksToBounds =YES; //view.clipsToBounds = YES;UIView 的 clipsToBounds属性和CALayer的setMasksToBounds属性表达的意思是一致的。取值:BOOL(YES/NO)作用:决定了子视图的显示范围。具体的说,就是当取值为YES时,剪裁超出父视图范围的子视图部分;当取值为NO时,不剪裁子视图。默认值为NO。1、根据label里的文字来自动适应尺寸[labelsizeToFit];2、根据label固定宽度来调节label的字体大小adjustsFontSizeToFitWidth:文字内容自适应标签度,默认NO label.adjustsFontSizeToFitWidth = YES;八、UITextField1、设置文本框的样式 _textField.borderStyle =UITextBorderStyleRoundedRect;2、属性returnKeyType设置return键类型 _textField.returnKeyType =UIReturnKeySend;3、自动可用return键 _textField.enablesReturnKeyAutomatically =YES;4、英文首字母是否大写 _textField.autocapitalizationType =UITextAutocapitalizationTypeNone;5、清除键的显示方式 _textField.clearButtonMode =UITextFieldViewModeWhileEditing;九、删除子视图1、//依次遍历self.view中的所有子视图 for(id tmpView in [self.viewsubviews]) { //找到要删除的子视图的对象 if([tmpView isKindOfClass:[UIImageViewclass]]) { UIImageView *imgView = (UIImageView *)tmpView; if(imgView.tag == 1) //判断是否满足自己要删除的子视图的条件 { [imgView removeFromSuperview]; //删除子视图 break; //跳出for循环,因为子视图已经找到,无须往下遍历 } } }2、//依次遍历self.view中的所有子视图 for(UIButton *buttonin [cellsubviews]) { //找到要删除的子视图的对象 if([buttonisKindOfClass:[UIButtonclass]]) { [button removeFromSuperview]; } }3、[view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];十、遮罩背景//覆盖导航栏,将View添加在keyWindow上 UIWindow *win = [[UIApplicationsharedApplication]keyWindow]; topView = [win.subviewsfirstObject];十一、状态栏[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];如果状态栏背景为浅色,应选用黑色字样式(UIStatusBarStyleDefault,默认值);如果背景为深色,则选用白色字样式(UIStatusBarStyleLightContent)。1、控件的局部圆角问题一个button或者label,只要右边的两个角圆角,或者只要一个圆角。该怎么办呢?这就需要图层蒙版来帮助我们了 CGRect rect = CGRectMake(0, 0, 100, 50); CGSize radio = CGSizeMake(5, 5);//圆角尺寸 UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//这只圆角位置 UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio]; CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayer masklayer.frame = button.bounds; masklayer.path = path.CGPath;//设置路径 button.layer.mask = masklayer;举例为button,其它继承自UIView的控件都可以2、navigationBar的透明问题如果仅仅把navigationBar的alpha设为0的话,那就相当于把navigationBar给隐藏了,大家都知道,父视图的alpha设置为0的话,那么子视图全都会透明的。那么相应的navigationBar的标题和左右两个按钮都会消失。这样显然达不到我们要求的效果。(1)如果仅仅是想要navigationBar透明,按钮和标题都在可以使用以下方法: [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];//给navigationBar设置一个空的背景图片即可实现透明,而且标题按钮都在细心的你会发现上面有一条线如下图:这就需要我们做进一步处理,把线去掉,如下方法即可: self.navigationController.navigationBar.shadowImage = [UIImage new]; //其实这个线也是image控制的。设为空即可(2)如果你想在透明的基础上实现根据下拉距离,由透明变得不透明的效果,那么上面那个就显得力不从心了,这就需要我们采用另外一种方法了 //navigationBar是一个复合视图,它是有许多个控件组成的,那么我们就可以从他的内部入手 [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;//这里可以根据scrollView的偏移量来设置alpha就实现了渐变透明的效果3、全局设置navigationBar标题的样式和barItem的标题样式 //UIColorWithHexRGB( )这个方法是自己定义的,这里只需要给个颜色就好了 [[UINavigationBar appearance] setBarTintColor:UIColorWithHexRGB(0xfefefe)]; [[UINavigationBar appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:UIColorWithHexRGB(0xfe6d27)}]; [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:10],NSForegroundColorAttributeName : UIColorWithHexRGB(0x666666)} forState:UIControlStateNormal]; [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSiz4、navigationBar隐藏显示的过度一个页面隐藏navigationBar,另一个不隐藏。两个页面进行push和pop的时候,尤其是有侧滑手势返回的时候,不做处理就会造成滑动返回时,navigationBar位置是空的,直接显示一个黑色或者显示下面一层视图,很难看。这就需要我们加入过度动画来隐藏或显示navigationBar:在返回后将要出现的页面实现viewWillAppear方法,需要隐藏就设为YES,需要显示就设为NO - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:NO animated:YES]; }5、给webView添加头视图webView是一个复合视图,里面包含有一个scrollView,scrollView里面是一个UIWebBrowserView(负责显示WebView的内容) UIView *webBrowserView = self.webView.scrollView.subviews[0];//拿到webView的webBrowserView self.backHeadImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenWidth*2/3.0)]; [_backHeadImageView sd_setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:[UIImage imageNamed:@"placeholderImage"]]; [self.webView insertSubview:_backHeadImageView belowSubview:self.webView.scrollView]; //把backHeadImageView插入到webView的scrollView下面 CGRect frame = self.webBrowserView.frame; frame.origin.y = CGRectGetMaxY(_backHeadImageView.frame); self.webBrowserView.frame = frame; //更改webBrowserView的frame向下移backHeadImageView的高度,使其可见6、模态跳转的动画设置设置模态跳转的动画,系统提供了四种可供选择 DetailViewController *detailVC = [[DetailViewController alloc]init]; //UIModalTransitionStyleFlipHorizontal 翻转 //UIModalTransitionStyleCoverVertical 底部滑出 //UIModalTransitionStyleCrossDissolve 渐显 //UIModalTransitionStylePartialCurl 翻页 detailVC.modalTransitionStyle = UIModalTransitionStylePartialCurl; [self presentViewController:detailVC animated:YES completion:nil];7、图片处理只拿到图片的一部分 UIImage *image = [UIImage imageNamed:filename]; CGImageRef imageRef = image.CGImage; CGRect rect = CGRectMake(origin.x, origin.y ,size.width, size.height); //这里的宽高是相对于图片的真实大小 //比如你的图片是400x400的那么(0,0,400,400)就是图片的全尺寸,想取哪一部分就设置相应坐标即可 CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect); UIImage *imageRect = [[UIImage alloc] initWithCGImage:imageRefRect];8、给UIView设置图片 UIImage *image = [UIImage imageNamed:@"playing"]; _layerView.layer.contents = (__bridge id)image.CGImage; _layerView.layer.contentsCenter = CGRectMake(0.25, 0.25, 0.5, 0.5); //同样可以设置显示的图片范围 //不过此处略有不同,这里的四个值均为0-1之间;对应的依然是写x,y,widt,height
10 0
- UIView、Table、TabBar、Navigation等小功能集锦
- Tabbar与Navigation嵌套
- iOS常用小功能集锦
- 遮挡tabbar,navigation的方法
- 自定义Navigation和TabBar(一)
- iOS Navigation+TabBar简单框架
- navigation Bar、toolBar、tabbar 区别
- IOS-自定义Tabbar与Navigation
- tabbar navigation黑线的处理
- java 自动化测试小功能集锦
- IOS中同时使用TabBar和Navigation
- 学习将tabbar和navigation一起使用
- tabbar和navigation的结合(跳转)
- iOS新闻导航结构 tabbar+navigation
- TabBar和Navigation搭建的界面
- Navigation随着Tabbar滑动而滑动
- iOS开发 navigation跳转时隐藏tabbar
- tabbar小细节
- gdb调用笔记
- [leetcode]Spiral Matrix II
- mfc中将接收到的十六进制数保存到TXT文件,保存形式为十进制
- 2.Git基本操作和设置
- android mvp快速开发框架介绍(继续dileber)
- UIView、Table、TabBar、Navigation等小功能集锦
- 黎活明给程序员的忠告
- 关于飞思卡尔
- zImage与uImage
- 小白也玩数学建模--引
- entity resolution
- 通过shell脚本来搭建python开发环境
- 对Java事物的理解
- iOS学习笔记-iOS中的类方法和实例方法