ios - 在swift下如何给tableview Grouped切指定圆角呢?
阿神
阿神 2017-04-17 17:35:25
0
3
464

项目要求是这样的

请问用swift如何作出这样的效果呢?
图示中的结构是一个section有2个row
所以是row1 切左上右上两个圆角, row2 切左下,右下2个圆角。

阿神
阿神

闭关修行中......

répondre à tous(3)
阿神

Le problème a été résolu, le code est le suivant, j'espère qu'il sera utile à tout le monde

  override func drawRect(rect: CGRect) {
        //切左上右上圆角
        let maskPath = UIBezierPath(roundedRect:self.bounds, byRoundingCorners: [.TopLeft,.TopRight], cornerRadii: CGSizeMake(5.0, 5.0))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = maskPath.CGPath
        self.layer.mask = maskLayer
        
        //添加border
        let borderLayer = CAShapeLayer()
        borderLayer.frame = self.bounds
        borderLayer.path = maskPath.CGPath
        borderLayer.lineWidth = 0.5
        borderLayer.strokeColor = UIColor.lightGrayColor().CGColor
        borderLayer.fillColor = UIColor.clearColor().CGColor
        
        let layers:NSArray = self.layer.sublayers! as NSArray
        
        if ((layers.lastObject!.isKindOfClass(CAShapeLayer))) {
            layers.lastObject?.removeFromSuperlayer()
        }
        self.layer.addSublayer(borderLayer)
        
    }
  override func drawRect(rect: CGRect) {
        //切左下右下圆角
        let maskPath = UIBezierPath(roundedRect:self.bounds, byRoundingCorners:[.BottomLeft,.BottomRight], cornerRadii: CGSizeMake(5.0, 5.0))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = maskPath.CGPath
        self.layer.mask = maskLayer
        
        
        //添加border
        let borderLayer = CAShapeLayer()
        borderLayer.frame = self.bounds
        borderLayer.path = maskPath.CGPath
        borderLayer.lineWidth = 0.5
        borderLayer.strokeColor = UIColor.lightGrayColor().CGColor
        borderLayer.fillColor = UIColor.clearColor().CGColor
        
        let layers:NSArray = self.layer.sublayers! as NSArray
        
        if ((layers.lastObject!.isKindOfClass(CAShapeLayer))) {
            layers.lastObject?.removeFromSuperlayer()
        }
        self.layer.addSublayer(borderLayer)

    }
洪涛

Je pense qu'il serait préférable que vous considériez les deux flux de l'image comme deux TableViewCells personnalisées de cette façon, les coins arrondis auxquels vous faites référence mettent en fait un coin arrondi blanc sur chaque cellule.

迷茫

Après avoir lu les réponses au premier étage, j'estime que c'est bel et bien une solution au problème.

Mais j'ai une question ici

L'intention de conception originale de Zhihu est la suivante

En cliquant sur la partie supérieure ou sur la partie inférieure, vous accéderez à différentes pages, ce qui signifie qu'un suivi différent est nécessaire. Mais si vous suivez la solution de l'ami à l'étage, comment résoudre cette situation

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal