我的文字在纵向模式下是两行.当我切换到横向模式时,它适合单行.我通过故事板使用静态tableview单元格;我怎样才能调整行的大小以适应?
屏幕是一个登录屏幕.
>第一个单元格包含一些解释文本
>第二个是用于输入帐户名称的文本字段
>第三个是用于输入密码的安全文本字段
>第四个(也是最后一个)单元格包含登录按钮.键盘上的返回键提交表单或根据需要切换焦点
解决方法
使用UITableView的heightForRowAtIndexPath:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { int topPadding = 10; int bottomPadding = 10; float landscapeWidth = 400; float portraitWidth = 300; UIFont *font = [UIFont fontWithName:@"Arial" size:22]; //This is for first cell only if you want for all then remove below condition if (indexPath.row == 0) // for cell with dynamic height { NSString *strText = [[arrTexts objectAtIndex:indexPath.row]; // filling text in label if(landscape)//depends on orientation { CGSize maximumSize = CGSizeMake(landscapeWidth,MAXFLOAT); // change width and height to your requirement } else //protrait { CGSize maximumSize = CGSizeMake(portraitWidth,MAXFLOAT); // change width and height to your requirement } //dynamic height of string depending on given width to fit CGSize textSize = CGSizeZero; if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0") { NSMutableParagraphStyle *pstyle = [NSMutableParagraphStyle new]; pstyle.lineBreakMode = NSLineBreakByWordWrapping; textSize = [[strText boundingRectWithSize:CGSizeMake(width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName :font,NSParagraphStyleAttributeName:[pstyle copy]} context:nil] size]; } else // < (iOS 7.0) { textSize = [strText sizeWithFont:font constrainedToSize:maximumSize lineBreakMode:NSLineBreakByWordWrapping] } return (topPadding+textSize.height+bottomPadding) // caculate on your bases as u have string height } else { // return height from the storyboard return [super tableView:tableView heightForRowAtIndexPath:indexPath]; } }
编辑:添加支持>和<在iOS 7.0中不推荐使用ios7和sizeWithFont方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。