Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableViewCell中的UIImage在行选择和从推式视图返回时正在调整大小_Ios_Xcode_Uitableview_Uiimageview - Fatal编程技术网

Ios UITableViewCell中的UIImage在行选择和从推式视图返回时正在调整大小

Ios UITableViewCell中的UIImage在行选择和从推式视图返回时正在调整大小,ios,xcode,uitableview,uiimageview,Ios,Xcode,Uitableview,Uiimageview,我是iOS的新手,希望有人能给我一些指导。。我有一个自定义tableviewcell,其中包含一个UIImage。当加载UITableView并创建单元格时,加载的图像仍保留在UIImageView控件的框架内。当行选择发生时,图像将调整大小,以填充单元格允许的高度。此时仅影响选定的行。从子视图返回时也会出现类似的问题(按下单元格上的按钮会加载子视图) 我已尝试在UIImageView的高度和宽度(以及superview中的x、y位置)上放置约束,并尝试在cellForRowAtIndexPat

我是iOS的新手,希望有人能给我一些指导。。我有一个自定义tableviewcell,其中包含一个UIImage。当加载
UITableView
并创建单元格时,加载的图像仍保留在UIImageView控件的框架内。当行选择发生时,图像将调整大小,以填充单元格允许的高度。此时仅影响选定的行。从子视图返回时也会出现类似的问题(按下单元格上的按钮会加载子视图)

我已尝试在UIImageView的高度和宽度(以及superview中的x、y位置)上放置约束,并尝试在cellForRowAtIndexPath事件中设置UIImageView的边界和帧。这些似乎都没有效果

删除所有修复此问题的尝试并返回最简单的代码

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
NSString*documentDirectory=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];
NSString*FavoriteMageFileName=[[NSString alloc]initWithFormat:@“%@/Folder-Favorite_24px.png”,documentDirectory];
NSString*videoPlayImageFileName=[[NSString alloc]initWithFormat:@“%@/Video-4_24px.png”,documentDirectory];
NSString*imageInQuestion=[[NSString alloc]initWithFormat:@“%@/T-BoneDish128.png”,documentDirectory];
SearchResultsTableViewCell*单元格=[tableView dequeueReusableCellWithIdentifier:@“SearchResultsTableViewCell”];
UIImage*favoriteIcon=[[UIImage alloc]initWithData:[[NSData alloc]initWithContentsOfFile:FavoriteMageFileName]];
UIImage*videoPlay=[[UIImage alloc]initWithData:[[NSData alloc]initWithContentsOfFile:videoPlayImageFileName]];
UIImage*image=[[UIImage alloc]initWithData:[[NSData alloc]initWithContentsOfFile:imageInQuestion]];
[cell.videoPlayButton setBackgroundImage:videoPlay for状态:uicontrol状态正常];
[cell.favoriteImage setImage:favoriteIcon];
[cell.imageView setImage:image];
返回单元;

}
对UITableCell进行了子类化,以提供对自定义属性(图像、标签和按钮)的访问。新类的属性名称与标准模板(即图像)的属性名称匹配

但是,在代码中填充这些属性时,仅更新super中的属性。实际上链接到标签和自定义单元格上的图像的出口的子类属性仍然为零

因此,当图像被显示时,它正在访问super中的图像,而不是那些子类中的图像,并且似乎没有应用任何约束,因为应用约束的图像为nil,并且没有被显示。将来需要记住的一点是,无论何时创建自定义UITableCell,都不要使用任何super属性的名称

一旦子类中的属性与超级类中的属性不同,这些属性就被正确地更新,链接到子类的图像输出就会显示一个图像,并且按照预期应用了约束


当您“重写”super的属性时,不会得到编译器错误或警告,这可能是在本例中无意中完成的。希望这能帮助其他IOS/Objective C新手。

我想你需要告诉你的图像视图剪辑到边界:
imageView.clipstobunds=YES假设在约束中,您为图像缩略图视图指定了固定的宽度和高度。您可以在自定义单元格的类中执行此操作。@Zhang感谢您的提示,我放置了cell.imageView.clipsToBounds=YES;在指定图像之前和之后。同样的行为还在继续。读完你的帖子后,我仍然不完全清楚问题是什么,你的“成功”案例是什么样子的。你能提供吗?我希望我能给你不止一票。谢谢