UIView を別の UIView と最初の UIView にレンダリングする方法を考えています。そのため、境界のあるメインの UIView があり、UIView は他の UIView にもレンダリングされます。
これは可能ですか?大規模なレイヤー操作が必要ですか?
UIView を別の UIView と最初の UIView にレンダリングする方法を考えています。そのため、境界のあるメインの UIView があり、UIView は他の UIView にもレンダリングされます。
これは可能ですか?大規模なレイヤー操作が必要ですか?
あなたの本当の意図が何であるかはわかりませんが、これはビューを2回描画し、ユーザーインタラクションなどは2番目のビューでは機能しません. また、このソリューションは、さまざまなフレーム サイズを処理しません。
複製するビューのヘッダー
@interface SrcView : UIView
@property(nonatomic, readonly, strong) UIView *cloneView;
@end
@interface CloneView : UIView
@property(nonatomic, weak) UIView *srcView;
- (id)initWithView:(UIView *)src;
@end
複製したいビューの実装
#import "SrcView.h"
#import "CloneView.h"
@implementation SrcView
@synthesize cloneView;
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
[cloneView setNeedsDisplay];
}
- (UIView *)cloneView {
if (!cloneView) {
cloneView = [[CloneView alloc] initWithView:self];
}
return cloneView;
}
@end
@implementation CloneView
@synthesize srcView;
- (id)initWithView:(UIView *)src {
self = [super initWithFrame:src.frame];
if (self) {
srcView = src;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[srcView.layer renderInContext:UIGraphicsGetCurrentContext()];
}
@end
cloneView を呼び出して、必要な場所に追加するだけです。
これは、StackOverflowでよく聞かれる質問のようです。例えば:
iphone、ipadDuplicateUIView-クローンビュー
あるUIViewの描画されたコンテンツを別のUIViewにコピーする
しかし、これを行うのが私の場合、最初のアプローチは、UIView
コピーしたいハンドルを取得し、それsubviews
をすべて再帰的に繰り返してから、メインのUIViewをコピーしたい サブビューとしてそれらをコピーして追加することです。UIView
これで進行中のレイヤー操作が多すぎるとは想像できませんが、プログラムでアウトレットやアクションを再確立する方法を理解する必要があります。
「複製」したい UIView の別のインスタンスを作成し、それをサブビューとして別のビューに追加します。UIView objectを実際に複製するのではなく、別のインスタンスを作成するだけです。