UIView ซ้ำกัน

ฉันต้องการแสดง UIView เดียวกันหลายครั้ง ในขณะนี้ ฉันมีภาพวาดใน UIView หลัก จากนั้นคัดลอกสิ่งนี้ลงในรูปภาพโดยใช้ renderInContext: และ UIGraphicsGetImageFromCurrentImageContext จากนั้น ฉันตั้งค่าเนื้อหาของ UIViews พร็อกซีอื่นให้เป็นรูปภาพนี้

 UIGraphicsBeginImageContext(size);

 [self.layer renderInContext:UIGraphicsGetCurrentContext()];

 UIImage * clonedImage = UIGraphicsGetImageFromCurrentImageContext();

 UIGraphicsEndImageContext();

 return [clonedImage CGImage];

ฉันประสบปัญหาคอขวดใน renderInContext: call น่าจะเป็นเพราะมันต้องคัดลอกรูปภาพของมุมมอง ฉันเห็นฮอตสปอตใน resample_byte_h_3cpp และ resample_byte_v_Ncpp แต่ฉันไม่แน่ใจว่าสิ่งเหล่านี้กำลังทำอะไรอยู่

เป็นไปได้ไหมที่จะแสดง UIView เดียวกันหลายครั้งเพื่อลดค่าใช้จ่ายนี้ หรือมีวิธีที่มีประสิทธิภาพมากกว่าในการแสดงภาพ?


person Douglas    schedule 02.11.2010    source แหล่งที่มา
comment
คุณหมายถึง UIView ประเภทใด   -  person matheeeny    schedule 02.11.2010
comment
มันเป็น UIView สืบทอดที่มีภาพพื้นหลังและภาพซ้อนทับ CAShapeLayer บางส่วน   -  person Douglas    schedule 03.11.2010


คำตอบ (1)


แล้วการทำสำเนาของ UIImage แทนที่จะสร้างรูปภาพใหม่ซ้ำแล้วซ้ำอีกจาก UIView ล่ะ

//.. Create the clonedImage from UIView

CGImageRef cgImageRef = [clonedImage CGImage];
UIImage *twinImage = [[UIImage alloc] initWithCGImage:cgImageRef];

//.. Use the images

[clonedImage release]; // if needed
[twinImage release]; // if needed
person runmad    schedule 03.11.2010
comment
ฉันกำลังอัปเดต UIView แหล่งที่มา และฉันต้องการเห็นการอัปเดตเหล่านั้นในพร็อกซีทั้งหมด ฉันอาจทนกับความล่าช้าเล็กน้อยบน iPhone 3G สำหรับรุ่นนี้ (ประมาณ 100-200 มิลลิวินาที) และเขียนแอปส่วนนี้ใหม่โดยใช้ OpenGL ในอนาคต มันทำงานได้ดีเหมือนกับบน iPad - person Douglas; 03.11.2010
comment
โอเค ถ้าอย่างนั้น คุณควรลองดูที่ Grand Central Dispatch ช่วยให้คุณสามารถตั้งค่าคิวและรันโค้ดเป็นกลุ่มได้ ขึ้นอยู่กับว่าโค้ดบางตัวเสร็จสิ้นเมื่อใด นอกจากนี้ยังทำงานในพื้นหลังด้วย ซึ่งจะไม่ค้นหาแอปและ/หรือ UI - person runmad; 03.11.2010