私はUITableView
4つのセクションを持っています。ここで、テーブル全体ではなく、テーブルの特定のセクションにシャドウ効果を追加したいと考えています。どうすればこのタスクを達成できますか?
質問する
9706 次
4 に答える
0
UITableViewCell の背景に影付きの画像を追加できます。画像に影を描く必要があります。これは非常にシンプルで、アプリケーションの実行速度が向上します。
于 2012-11-15T10:34:53.487 に答える
0
セクションのヘッダーとフッター、およびセクションのすべてのセルを変更する必要があります。
tableView:viewForFooterInSection:
、tableView:viewForHeaderInSection:
およびそのために使用tableView:cellForRowAtIndexPath:
します。暗くしたい各ビューに rgba 0/0/0/0.2 または同様の UIView を追加するだけです。
于 2012-11-15T10:30:10.857 に答える
-1
必要なセクションのシャドウを指定できます。これがサンプルです。
まず第一に、私たちはあなたのヘッダーのためにいくつかのスペースを利用できるようにしています
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == mysection)
{
// Returns the height you want for the header section. I am giving 20
return 20;
}
}
次に、ヘッダーの装飾
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if(section == mysection)
{
UIView *shadowView = [[[UIView alloc] initWithFrame: CGRectMake(0,0,320,20)] autorelease];
shadowView.backgroundColor = [UIColor whiteColor];
// Doing the Decoration Part
shadowView.layer.shadowColor = [[UIColor blackColor] CGColor];
shadowView.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
shadowView.layer.shadowRadius = 3.0f;
shadowView.layer.shadowOpacity = 1.0f;
return shadowView;
}
return nil;
}
あなたの側でそれを完了します。これが基本的なアウトラインです。ハッピーコーディング:)
于 2012-11-15T10:45:53.713 に答える
-3
フルテーブルシャドウでこれを試してください
yourView.layer.shadowColor = [[UIColor blackColor] CGColor];
yourView.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
yourView.layer.shadowRadius = 3.0f;
yourView.layer.shadowOpacity = 1.0f;
セクションシャドウにこれを試してください
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if (cell.responds(to: #selector(getter: UIView.tintColor))){
if tableView == self.tableView {
let cornerRadius: CGFloat = 12.0
cell.backgroundColor = .clear
let layer: CAShapeLayer = CAShapeLayer()
let path: CGMutablePath = CGMutablePath()
let bounds: CGRect = cell.bounds
bounds.insetBy(dx: 25.0, dy: 0.0)
var addLine: Bool = false
if indexPath.row == 0 && indexPath.row == ( tableView.numberOfRows(inSection: indexPath.section) - 1) {
path.addRoundedRect(in: bounds, cornerWidth: cornerRadius, cornerHeight: cornerRadius)
} else if indexPath.row == 0 {
path.move(to: CGPoint(x: bounds.minX, y: bounds.maxY))
path.addArc(tangent1End: CGPoint(x: bounds.minX, y: bounds.minY), tangent2End: CGPoint(x: bounds.midX, y: bounds.minY), radius: cornerRadius)
path.addArc(tangent1End: CGPoint(x: bounds.maxX, y: bounds.minY), tangent2End: CGPoint(x: bounds.maxX, y: bounds.midY), radius: cornerRadius)
path.addLine(to: CGPoint(x: bounds.maxX, y: bounds.maxY))
} else if indexPath.row == (tableView.numberOfRows(inSection: indexPath.section) - 1) {
path.move(to: CGPoint(x: bounds.minX, y: bounds.minY))
path.addArc(tangent1End: CGPoint(x: bounds.minX, y: bounds.maxY), tangent2End: CGPoint(x: bounds.midX, y: bounds.maxY), radius: cornerRadius)
path.addArc(tangent1End: CGPoint(x: bounds.maxX, y: bounds.maxY), tangent2End: CGPoint(x: bounds.maxX, y: bounds.midY), radius: cornerRadius)
path.addLine(to: CGPoint(x: bounds.maxX, y: bounds.minY))
} else {
path.addRect(bounds)
addLine = true
}
layer.path = path
layer.fillColor = UIColor.white.withAlphaComponent(0.8).cgColor
if addLine {
let lineLayer: CALayer = CALayer()
let lineHeight: CGFloat = 1.0 / UIScreen.main.scale
lineLayer.frame = CGRect(x: bounds.minX + 10.0, y: bounds.size.height - lineHeight, width: bounds.size.width, height: lineHeight)
lineLayer.backgroundColor = tableView.separatorColor?.cgColor
layer.addSublayer(lineLayer)
}
let testView: UIView = UIView(frame: bounds)
testView.layer.insertSublayer(layer, at: 0)
testView.backgroundColor = .clear
cell.backgroundView = testView
}
}
}
于 2012-11-15T10:28:47.833 に答える