0

我正在开发应用程序,用户可以在其中创建带有附件的帖子。对于附件,我使用以下方法UITableView以水平模式旋转它viewDidLoad

// Rotates the view.
    CGAffineTransform transform = CGAffineTransformMakeRotation(-1.5707963);
    imageAttachmentTableView.transform = transform;

当用户从 Photo Library 中选择图片时,它们会被加载到 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

我已经尝试了所有可能的解决方案,但无法做出任何坚持,请帮助

4

1 回答 1

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;
            }
        }
    }
}

在这里,我刚刚更新了 Delete Button 框架和 TableCell 大小。

于 2012-12-28T08:16:17.457 回答