Swift - Spielplatz - Core Graphics / Core Text / Benutzerdefinierte Ansicht
Frage
Versuche ich zu machen, um eine eigene UIView-Komponente im swift-Spielplatz. Ich habe in der Lage gewesen, um herauszufinden, wie alles außer für die Darstellung von text korrekt. Ich bin mir nicht sicher ob ich das tun soll dies über den Core-Grafik oder Core Text-oder genau, wie man es korrekt funktioniert.
Wie Sie sehen können in dem Bild unten, ich will zum Rendern von text die beiden oben unten und rechts oben auf jeder Seite meine eigene View-Komponente
Habe ich versucht, verschiedene Möglichkeiten, um den text zu arbeiten, aber ich halten auf Grund zu laufen. Wenn jemand in der Lage wäre, mir zu zeigen, wie Sie ändern, mein Spielplatz, um ein paar text-rendering, das wäre auch genial.
Spielplatz-Code
//Playground - noun: a place where people can play
import Foundation
import UIKit
class RunwayView : UIView {
var northText : String?
var southText : String?
///Draws the "runway"
override func drawRect(rect: CGRect) {
//Setup graphics context
var ctx = UIGraphicsGetCurrentContext()
//clear context
CGContextClearRect(ctx, rect)
let parentVieBounds = self.bounds
let width = CGRectGetWidth(parentVieBounds)
let height = CGRectGetHeight(parentVieBounds)
//Setup the heights
let endZoneHeight : CGFloat = 40
/* Remember y is negative and 0,0 is upper left*/
//Create EndZones
CGContextSetRGBFillColor(ctx, 0.8, 0.8, 0.8, 1)
CGContextFillRect(ctx, CGRectMake(0, 0, width, endZoneHeight))
CGContextFillRect(ctx, CGRectMake(0, height-endZoneHeight, width, endZoneHeight))
var northString = NSMutableAttributedString(string: "36")
var attrs = [NSFontAttributeName : UIFont.systemFontOfSize(16.0)]
var gString = NSMutableAttributedString(string:"g", attributes:attrs);
var line = CTLineCreateWithAttributedString(gString)
CGContextSetTextPosition(ctx, 10, 50);
CTLineDraw(line, ctx);
//Clean up
}
}
var outerFrame : UIView = UIView(frame: CGRectMake(20,20,400,400))
var runway1 : RunwayView = RunwayView(frame: CGRectMake(0,0,30,260))
var runway2 : RunwayView = RunwayView(frame: CGRectMake(80,0,30,340))
runway1.transform = CGAffineTransformConcat(CGAffineTransformMakeTranslation(20, 200),
CGAffineTransformMakeRotation(-0.785398163))
outerFrame.addSubview(runway1)
runway2.transform = CGAffineTransformConcat(CGAffineTransformMakeTranslation(120, 140),
CGAffineTransformMakeRotation(-0.585398163))
outerFrame.addSubview(runway2)
outerFrame.backgroundColor = UIColor.yellowColor()
outerFrame.clipsToBounds = true
//View these elements
runway1
outerFrame
runway1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich eine utility-Funktion für meine app zum zeichnen von text mit
CoreText
.Es gibt die Textgröße für die weitere Verarbeitung:
Nenne es gerne so:
Hoffe das hilft dir.
CGRect.integral
Swift (3) oderCGRectIntegeral(rect)
Swift (2) ist besser alsceil