【Swift4】UITableViewを回転させて横スクロールや逆スクロールにする方法【Objective-C】【iOS11】

UITableViewは基本的にコンテンツ領域が下へ伸びている状態のものしか作れませんが、UITableViewを180度回転させて、さらにその中のUITableViewCellを逆回転で180度回転させることにより、基本のスクロールとは違う、横スクロールや逆スクロールのUITableViewを作ることが可能です。

UITableViewを横スクロールや逆スクロールにする方法

Objective-C

まず、UITableView回転させます。ここでは180度回転させています。

tableView.transform = CGAffineTransformMakeRotation(M_PI);

次に、UITableViewCellを逆回転させます。

- (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        cell.contentView.transform = CGAffineTransformMakeRotation(-M_PI);
    }

    return cell;
}

Swift4.0

まず、UITableView回転させます。ここでは180度回転させています。

tableView.transform = tableView.transform.rotated(by: CGFloat(Double.pi))

次に、UITableViewCellを逆回転させます。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
	let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(UITableViewCell.self), for: indexPath) as! UITableViewCell

	cell.transform = cell.transform.rotated(by: CGFloat(-Double.pi))

	return cell
}

 

以上で、UITableViewの横スクロールや逆スクロールの実装が可能となります。とても便利ですので覚えておきましょう。