(十一)-使新闻内容自适应高度
来源:互联网 发布:电脑记账软件 编辑:程序博客网 时间:2024/05/16 10:06
IOS开发---菜鸟学习之路--(十一)-使新闻内容自适应高度
上一章当中,我们留了一个小BUG。
其实就是浏览新闻的时候,如果文字内容过长的花,UITextView 会有个下拉框,而最底层的UIScrollView也有个下拉框,那么在使用的时候就会非常的不爽。
而这章呢我们就要解决这样一个问题了
其实并不是很复杂的修改方法
我们只需要将viewDidLoad改成下面这样就可以了
- (void)viewDidLoad{ GetWebInfo *getwebinfo=[GetWebInfo alloc]; NSString *myparameters=[[NSString alloc] initWithString:[NSString stringWithFormat:@"Method=getSingleNewsbyId&new_id=%@",mynewid]]; getwebinfo.parameters=myparameters; NSString *webReturnMessage=[getwebinfo dogetWebInfo]; NSData* jsonData=[webReturnMessage dataUsingEncoding:NSUTF8StringEncoding]; NSArray *keys =[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; // NSLog(@"%@",keys); timelabel.text=[[keys objectAtIndex:0]valueForKey:@"time"]; titlelabel.text=[[keys objectAtIndex:0 ]valueForKey:@"title"]; contenttextview.text=[[keys objectAtIndex:0 ]valueForKey:@"contents"]; NSInteger i=0; if(haveimage) { images=[[[keys objectAtIndex:0 ]valueForKey:@"images"] componentsSeparatedByString:@","]; for (NSString *singleimage in images) { NSData *newimage=[Base64AndImageHelp mydataWithBase64EncodedString:singleimage]; UIImage *newjiaban=[[UIImage alloc] initWithData:newimage]; UIImageView *imageView = [[UIImageView alloc] init]; [self.mainscrollview addSubview:imageView]; imageView.frame = CGRectMake(20,170*i+100,280,150);//left ,top ,width ,height imageView.image=newjiaban; i++; } } if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { NSInteger newSizeH; floatfPadding = 16.0; // 8.0px x 2 CGSize constraint = CGSizeMake(contenttextview.contentSize.width - fPadding, CGFLOAT_MAX); CGSize size =[contenttextview.text sizeWithFont: contenttextview.font constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; newSizeH = size.height + 16.0 - 6; contenttextview.frame=CGRectMake(20 ,170*i+100,280,newSizeH); mainscrollview.contentSize=CGSizeMake(280, 100+170*i+newSizeH); } else { CGSize size =[[contenttextview text] sizeWithFont:[contenttextview font]]; int length = size.height; // 2. 取出文字的高度 int colomNumber = contenttextview.contentSize.height/length; //3. 计算行数contenttextview.frame=CGRectMake(20 ,170*i+100,280,colomNumber*22); mainscrollview.contentSize=CGSizeMake(280, 100+170*i+colomNumber*22); } [super viewDidLoad];// Do any additional setup after loading the view from its nib.}
首先我们需要判断一下设备的系统版本。
为什么需要判断设备的系统版本呢?
这是因为在IOS7当中UITextView已经不支持contentSize属性了。(也并不是不支持,而是超过长度的话获取过来的结果是相同的。)
接下来我来解释下 修改的部分
首先先判断设备版本
如果是IOS7以下的话呢就先获取TextView的字体样式。
然后再取出字体的高度
最后利用contentSize的高来除以行数。最后再修改下样式就可以了
而对于IOS7以上的话就需要使用其他方法来达到相应的效果了。
具体的就靠大家自己参照代码理解了。
最后再附上一张效果图
0 0
- (十一)-使新闻内容自适应高度
- 自适应高度,新闻纵向滚动
- iframe 自适应内容高度
- iframe 自适应内容高度
- UITableViewCell自适应内容高度
- iframe高度自适应内容
- iframe高度自适应内容
- UIWebView自适应内容高度
- Item高度自适应内容
- IFrame自适应内容高度
- textarea自适应内容高度
- textarea 自适应内容高度
- Textarea 高度自适应 根据内容自适应高度
- Textarea 高度自适应 根据内容自适应高度
- iOS的WebView自适应内容高度(真实高度)
- textarea高度自适应(随着内容增加高度增加)
- IFrame根据内容自适应高度
- IFrame 根据内容自适应高度
- 【木头Cocos2d-x 025】状态机篇(第04章) --事件驱动,你想象不到的强大
- 稳压电源(13) 扩大输出电压调节范围的方法
- 字符串匹配---KMP,Horspool,Boyer-Moore和Sunday等算法
- cocos2d-x 发布 android 版本心得
- GCC VC6.0 编译器下 C++虚继承内存大小
- (十一)-使新闻内容自适应高度
- [ACM] hdu 1754 I Hate It (线段树,单点更新)
- Hibernate 进阶版
- Linux C 格式化输入输出函数操作
- (十二)-利用ASIHTTPRequest进行异步获取数据
- zoj1083
- 【和贺老师一起做C++项目】WEEK1用枚举表示对称方式
- (十三)-利用MBProgressHUD进行异步获取数据
- 修改服务器端口号