はじめCGPathにサイズ調整
私が持っているCGPath
私はPocketSVG
APIを使用してSVG
ファイルから作成します。それはすべて正常に動作します。
問題
問題は形状が何らかの理由で伸びるということで、青色が、それを無視してください、それが必要だけにすることですあなたにもっと見える(この絵に目を通してください私は達成するために何をしたいですか
:ClearColor
)こと?私は画面の幅全体に行き渡る形を実現したい(私は高さに気をつけません、幅に応じてそれ自体を修正する必要があります)、画面の下部にくっついてください。この写真を見てくださいウェル(円形のボタンを無視してください):
コード
重要な部分、私はSVG
ファイルからこの図形を描くUIView
のサブクラスを持って
)、それは0と呼ばれた。次に、私のMainViewController
(UIViewController
のサブクラス)には、CategoriesBarView
のオブジェクトを作成し、これをプログラムでサブビューとして設定しています。
CategoriesBarView
:
class CategoriesBarView: UIView {
override func layoutSubviews() {
let myPath = PocketSVG.pathFromSVGFileNamed("CategoriesBar").takeUnretainedValue()
var transform = CGAffineTransformMakeScale(self.frame.size.width/750.0, self.frame.size.height/1334.0)
let transformedPath = CGPathCreateCopyByTransformingPath(myPath, &transform)
let myShapeLayer = CAShapeLayer()
myShapeLayer.path = transformedPath
let blur = UIBlurEffect(style: .Light)
let effectView = UIVisualEffectView(effect: blur)
effectView.frame.size = self.frame.size
effectView.frame.origin = CGPointMake(0, 0)
effectView.layer.mask = myShapeLayer
self.addSubview(effectView)
}
}
MainViewController
:
override func viewDidLoad() {
super.viewDidLoad()
let testHeight = UIScreen.mainScreen().bounds.size.height/6 // 1/6 of the screen’s height, that is the height in the target picture approximately, doesn’t it?
let categoriesBarView = CategoriesBarView(frame: CGRect(x: 0, y: UIScreen.mainScreen().bounds.size.height - testHeight , width: UIScreen.mainScreen().bounds.size.width, height: testHeight))
categoriesBarView.backgroundColor = UIColor.blueColor() // AS I said, it should be ClearColor
self.view.addSubview(categoriesBarView)
}
あなたの誰もが、問題はここに、なぜ形状はそのように伸びているものである知っていますか?誰かがここで私を助けることができたら本当に感謝します。
ありがとうございました。
あなたは画面解像度に応じてあなたのパスを拡張しようとしたことがありますか? –
@DipenPanchasaraどういう意味ですか?どうやってやるの?コードで何を変更すればよいですか?ありがとうございました! –
100x100でパスを描き、320x100で同じように見えたい場合は、新しいエリアが実際のパスより3.2倍多く、パスのxポイントに3.2を掛けます。パスのシンプルなスケーリング –