14

UIView を別の UIView と最初の UIView にレンダリングする方法を考えています。そのため、境界のあるメインの UIView があり、UIView は他の UIView にもレンダリングされます。

これは可能ですか?大規模なレイヤー操作が必要ですか?

4

4 に答える 4

15

あなたの本当の意図が何であるかはわかりませんが、これはビューを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 を呼び出して、必要な場所に追加するだけです。

于 2012-04-28T19:54:03.497 に答える
5

これは、StackOverflowでよく聞かれる質問のようです。例えば:

iphone、ipadDuplicateUIView-クローンビュー

あるUIViewの描画されたコンテンツを別のUIViewにコピーする

UIViewの重複

UIViewの複製、複製、またはコピー

しかし、これを行うのが私の場合、最初のアプローチは、UIViewコピーしたいハンドルを取得し、それsubviewsをすべて再帰的に繰り返してから、メインのUIViewをコピーしたい サブビューとしてそれらをコピーして追加することです。UIView

これで進行中のレイヤー操作が多すぎるとは想像できませんが、プログラムでアウトレットやアクションを再確立する方法を理解する必要があります。

于 2012-04-28T17:19:12.243 に答える
0

「複製」したい UIView の別のインスタンスを作成し、それをサブビューとして別のビューに追加します。UIView objectを実際に複製するのではなく、別のインスタンスを作成するだけです。

于 2012-04-28T17:25:49.643 に答える