我正在开发应用,用户可以使用附件创建帖子。对于附件,我使用UITableView
并在viewDidLoad
方法中以水平模式旋转它,如下所示:
// Rotates the view.
CGAffineTransform transform = CGAffineTransformMakeRotation(-1.5707963);
imageAttachmentTableView.transform = transform;
当用户从照片库中选择图像时,它们将被加载到UITableView的imageView中。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
CGAffineTransform transform = CGAffineTransformMakeRotation(1.5707963);
cell.imageView.transform = transform;
cell.imageView.frame = CGRectMake(0, 0, 110, 110);
cell.imageVenter image description hereiew.image = [imageAttachments objectAtIndex:indexPath.row];
return cell;
}
cell.imageView
再次向相反方向旋转,以便图像在实际方向上可见
UITableView是在编辑模式下制作的,因此在加载图像时,也可以通过单击删除它们。
- (void)viewWillAppear:(BOOL)animated {
[imageAttachmentTableView setEditing: YES animated: YES];
}
我还将默认的“删除”文字更改为“X”
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"X";
}
代码在纵向模式下完美运行,如下面的屏幕,当用户点击' - '按钮'X'出现时。
http://img5.imageshack.us/img5/1125/screenshot20121221at742.png
问题出现在横向模式下,会出现( - )按钮,但不会出现“X”按钮。 http://img833.imageshack.us/img833/6305/screenshot20121221at747.png
我已经尝试了所有可能的解决方案,但无法做任何坚持,请帮助
答案 0 :(得分:1)
解决了!
问题是在横向模式下,UITableViewCell大小和删除按钮框架已更改,因此我将UITableViewCell
与我的自定义类子类化。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
OMAttachmentCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[OMAttachmentCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
CGAffineTransform transform = CGAffineTransformMakeRotation(1.5707963);
cell.imageView.transform = transform;
cell.imageView.frame = CGRectMake(0, 0, 110, 110);
cell.imageView.image = [imageAttachments objectAtIndex:indexPath.row];
return cell;
}
在我的OMAttachmentCell
课程中,我实施了以下方法。
-(void) willTransitionToState:(UITableViewCellStateMask)state
{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
UIView *deleteButtonView = (UIView *)[subview.subviews objectAtIndex:0];
CGRect f = deleteButtonView.frame;
f.origin.x = 0;
f.origin.y = 0;
f.size.width = 30;
f.size.height = 34;
CGRect sf = self.frame;
sf.size.width = 110;
sf.size.height = 110;
deleteButtonView.frame = f;
self.frame = sf;
}
}
}
}
这里我刚刚更新了删除按钮框架和TableCell大小。