上一章当中,我们留了一个小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:]valueForKey:@"time"];
titlelabel.text=[[keys objectAtIndex: ]valueForKey:@"title"];
contenttextview.text=[[keys objectAtIndex: ]valueForKey:@"contents"];
NSInteger i=;
if(haveimage)
{
images=[[[keys objectAtIndex: ]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( ,*i+,,);//left ,top ,width ,height
imageView.image=newjiaban;
i++;
}
}
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
NSInteger newSizeH;
float fPadding = 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 - ;
contenttextview.frame=CGRectMake( ,*i+,,newSizeH);
mainscrollview.contentSize=CGSizeMake(, +*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( ,*i+,,colomNumber*);
mainscrollview.contentSize=CGSizeMake(, +*i+colomNumber*);
} [super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
首先我们需要判断一下设备的系统版本。
为什么需要判断设备的系统版本呢?
这是因为在IOS7当中UITextView已经不支持contentSize属性了。(也并不是不支持,而是超过长度的话获取过来的结果是相同的。)
接下来我来解释下 修改的部分
首先先判断设备版本
如果是IOS7以下的话呢就先获取TextView的字体样式。
然后再取出字体的高度
最后利用contentSize的高来除以行数。最后再修改下样式就可以了
而对于IOS7以上的话就需要使用其他方法来达到相应的效果了。
具体的就靠大家自己参照代码理解了。
最后再附上一张效果图