状況
私は2つのビューを得ました:
- スーパービュー (含む:)
- サブビュー (カスタマイズされた DrawRect 関数を持つ)
ドロー機能
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 3.0);
CGContextSetFillColorWithColor(context, self.targetColor.CGColor);
CGContextAddRect(context, CGRectStandardize(self.target));
CGContextFillPath(context);
したがって、この DrawRect 関数は、サブビュー座標系の特定の位置に長方形を描画するだけです (サブビューに表示されると、画面外になる可能性があります)。
私のView Controllerには、両方へのアウトレットがあります。View Controller は、データ モデルを含むオブジェクトの関数を定期的に呼び出します。このオブジェクトは、表示したい領域を定義する CGRect を返します。(サブビュー座標系)
意図された動作
したがって、20 Hz で呼び出せるほど効率的である限り、どのように行われたかは気にしません。しかし、私は正確に、その領域のみが描画され、スーパービューに収まるようにスケーリングされることを望んでいます。したがって、その翻訳とスケール(私が専門家ではないことは確かです)。そして、このプロセスは何度も何度も繰り返されます。
これまでに試したこと
私はCGImageRefなどでこれを機能させることができました(データモデルは意図したとおりに機能します)が、カスタムビューでは機能しません。スーパービューの境界を変更すると翻訳が行われますが、スケーリングを機能させることができませんでした。ビューの境界またはフレームを変更し、自動サイズ変更動作を定義することでこれを解決する方法があることを願っていますが、その方法を見つけることができませんでした。もう 1 つの方法は、サブビューに適用される CGAffineTransformMatrix を構築する関数を定義することです。しかし、私が言ったように、これは私にとって新しいことであり、経験のある人が私を正しい方向に向けるのに数分しかかからないだろうと考えました.
ですから、皆さんがいくつかのスキルを披露する絶好の機会です ;)