Der beste Weg, um ein Problem wie dieses zu lösen, ist die Verwendung von CAShapeLayer. Hier ist die Art von Sache, die funktionieren würde: kleben Sie es auf einen Spielplatz und sehen Sie, wie es von den Ecken abschneidet.
import UIKit
import XCPlayground
extension UIView {
func maskCorners(inset: CGFloat) {
let path = UIBezierPath()
path.moveToPoint(CGPoint(x: bounds.origin.x + inset,y: 0))
path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds) - inset,y: 0))
path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds), y: bounds.origin.y + inset))
path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds), y: CGRectGetMaxY(bounds) - inset))
path.addLineToPoint(CGPoint(x: CGRectGetMaxX(bounds) - inset,y: CGRectGetMaxY(bounds)))
path.addLineToPoint(CGPoint(x: bounds.origin.x + inset,y: CGRectGetMaxY(bounds)))
path.addLineToPoint(CGPoint(x: 0,y: CGRectGetMaxY(bounds) - inset))
path.addLineToPoint(CGPoint(x: 0,y: bounds.origin.y + inset))
path.addLineToPoint(CGPoint(x: bounds.origin.x + inset,y: 0))
let mask = CAShapeLayer()
mask.frame = bounds
mask.path = path.CGPath
layer.mask = mask
}
}
let diamond = UIView(frame: CGRect(x:0, y: 0, width: 100, height:100))
diamond.backgroundColor = UIColor.redColor()
XCPlaygroundPage.currentPage.liveView = diamond
diamond.maskCorners(25)
Überschreiben Sie 'drawRect:'. – rmaddy
Entschuldigung, ich habe diese Methode noch nie zuvor benutzt. Könnten Sie mir bitte einen Beispielcode zur Verfügung stellen? Danke – penatheboss
Bitte lesen Sie die [Programmieranleitung für iOS anzeigen] (https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009503) – rmaddy