คำถามติดแท็ก calayer

CALayer เป็นคลาส Core Animation ในเฟรมเวิร์ก Quartz Core มันห่อหุ้มรูปทรงเรขาคณิตและการนำเสนอของเลเยอร์ สนับสนุนภาพเคลื่อนไหวของรูปทรงเรขาคณิตของเลเยอร์และเนื้อหา

4
เครื่องมืออ่าน PDF ที่รวดเร็วและแบบ Lean สำหรับ iPhone / iPad / iOs - เคล็ดลับและคำแนะนำ?
เมื่อไม่นานมานี้มีคำถามมากมายเกี่ยวกับการวาด PDF ใช่คุณสามารถแสดงผล PDF ได้อย่างง่ายดายด้วยUIWebViewแต่มันไม่สามารถให้ประสิทธิภาพและการทำงานที่คุณคาดหวังจากโปรแกรมดู PDF ที่ดี คุณสามารถวาดหน้าไฟล์ PDF ไปยัง CALayerหรือเพื่อ UIImage Apple ยังมีรหัสตัวอย่างเพื่อแสดงวิธีการวาด PDF ขนาดใหญ่ใน Zoomable UIScrollview แต่ปัญหาเดียวกันก็ยังคงมีอยู่ วิธี UIImage: PDF ในขนาดที่UIImageไม่ออพติคอลรวมถึงวิธีการเลเยอร์ CPU และหน่วยความจำได้รับผลกระทบUIImagesจากการPDFcontext จำกัด / ป้องกันการใช้เพื่อสร้างการเรนเดอร์แบบเรียลไทม์ของระดับการซูมใหม่ วิธี CATiledLayer: มีค่าโสหุ้ยที่สำคัญ (เวลา) การวาดหน้าเต็มรูปแบบ PDF ไปที่CALayer: แต่ละแผ่นสามารถมองเห็นการแสดงผล (แม้จะมีการปรับขนาดกระเบื้อง) CALayers ไม่สามารถเตรียมล่วงหน้า (แสดงนอกหน้าจอ) โดยทั่วไปแล้วโปรแกรมดู PDF นั้นค่อนข้างหนักในหน่วยความจำเช่นกัน แม้แต่ตรวจสอบการใช้หน่วยความจำของตัวอย่าง PDF ที่ซูมได้ของ Apple ในโครงการปัจจุบันของฉันฉันกำลังพัฒนาโปรแกรมดู PDF และกำลังแสดงUIImageหน้าหนึ่งในเธรดแยกต่างหาก …
368 ios  pdf  calayer 

4
ฉันจะใช้มุมมองการแปลงเป็น UIView ได้อย่างไร
ฉันกำลังมองหาการเปลี่ยนมุมมองบน UIView (เช่นเห็นใน coverflow) มีใครรู้บ้างไหมว่าสิ่งนี้เป็นไปได้หรือไม่? ฉันได้ตรวจสอบการใช้งานCALayerและใช้งานพอดคาสต์ Core Animation ที่ใช้งานได้จริงทั้งหมด แต่ฉันยังไม่ชัดเจนเกี่ยวกับวิธีสร้างการแปลงรูปแบบนี้บน iPhone ความช่วยเหลือคำแนะนำหรือตัวอย่างโค้ดจะได้รับการชื่นชมจริงๆ!

11
ฉันจะปรับจุดยึดของ CALayer ได้อย่างไรเมื่อใช้ Auto Layout?
หมายเหตุ : สิ่งต่าง ๆ ได้ดำเนินไปนับตั้งแต่มีการถามคำถามนี้ ดูที่นี่สำหรับภาพรวมที่ดีล่าสุด ก่อนเลย์เอาต์อัตโนมัติคุณสามารถเปลี่ยนจุดยึดของเลเยอร์ของมุมมองโดยไม่ย้ายมุมมองโดยจัดเก็บเฟรมตั้งค่าจุดยึดและกู้คืนเฟรม ในโลกเลย์เอาต์อัตโนมัติเราไม่ได้กำหนดเฟรมอีกต่อไป แต่ข้อ จำกัด ไม่ได้ขึ้นอยู่กับงานของการปรับตำแหน่งมุมมองกลับไปที่ที่เราต้องการ คุณสามารถแฮกข้อ จำกัด เพื่อเปลี่ยนตำแหน่งมุมมองของคุณ แต่เมื่อหมุนหรือเหตุการณ์การปรับขนาดอื่น ๆ สิ่งเหล่านี้จะไม่ถูกต้องอีกครั้ง แนวคิดที่สดใสต่อไปนี้ใช้ไม่ได้เนื่องจากสร้าง "การจับคู่แอตทริบิวต์ของรูปแบบไม่ถูกต้อง (ซ้ายและกว้าง)": layerView.layer.anchorPoint = CGPointMake(1.0, 0.5); // Some other size-related constraints here which all work fine... [self.view addConstraint: [NSLayoutConstraint constraintWithItem:layerView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:layerView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:20.0]]; ความตั้งใจของฉันที่นี่คือการตั้งค่าขอบด้านซ้ายของlayerViewมุมมองที่มีจุดยึดที่ปรับได้ถึงครึ่งหนึ่งของความกว้างของมันบวก 20 (ระยะทางที่ฉันต้องการแทรกจากขอบด้านซ้ายของผู้ควบคุม) เป็นไปได้ไหมที่จะเปลี่ยนจุดยึดโดยไม่ต้องเปลี่ยนตำแหน่งของมุมมองในมุมมองที่ถูกจัดวางด้วยเลย์เอาต์อัตโนมัติ? ฉันต้องใช้ค่าฮาร์ดโค้ดและแก้ไขข้อ จำกัด …
161 ios  calayer  autolayout 

15
CABasicAnimation รีเซ็ตเป็นค่าเริ่มต้นหลังจากที่การเคลื่อนไหวเสร็จสมบูรณ์
ฉันหมุน CALayer และพยายามหยุดที่ตำแหน่งสุดท้ายหลังจากที่ภาพเคลื่อนไหวเสร็จสมบูรณ์ แต่หลังจากที่ภาพเคลื่อนไหวเสร็จสมบูรณ์มันจะรีเซ็ตเป็นตำแหน่งเริ่มต้น (เอกสาร xcode กล่าวอย่างชัดเจนว่าแอนิเมชันจะไม่อัปเดตมูลค่าของทรัพย์สิน) ข้อเสนอแนะใด ๆ วิธีการบรรลุสิ่งนี้

15
การปิดใช้งานภาพเคลื่อนไหวโดยนัยใน - [CALayer setNeedsDisplayInRect:]
ฉันมีเลเยอร์พร้อมรหัสการวาดที่ซับซ้อนในเมธอด -drawInContext: ฉันพยายามลดจำนวนภาพวาดที่ฉันต้องทำดังนั้นฉันจึงใช้ -setNeedsDisplayInRect: เพื่ออัปเดตเฉพาะส่วนที่เปลี่ยนแปลง มันใช้งานได้อย่างยอดเยี่ยม อย่างไรก็ตามเมื่อระบบกราฟิกอัปเดตเลเยอร์ของฉันมันก็เปลี่ยนจากภาพเก่าเป็นภาพใหม่โดยใช้ cross-fade ฉันต้องการให้สลับทันที ฉันได้ลองใช้ CATransaction เพื่อปิดการกระทำและตั้งเวลาเป็นศูนย์และไม่ทำงาน นี่คือรหัสที่ฉันใช้: [CATransaction begin]; [CATransaction setDisableActions: YES]; [self setNeedsDisplayInRect: rect]; [CATransaction commit]; มีวิธีอื่นใน CATransaction ที่ฉันควรใช้แทน (ฉันได้ลอง -setValue: forKey: with kCATransactionDisableActions, ผลลัพธ์เดียวกัน)

14
UIView ปัดเศษโดยใช้ CALayers - เฉพาะบางมุม - อย่างไร?
ในแอปพลิเคชันของฉัน - มีสี่ปุ่มชื่อดังนี้: บนซ้าย ล่างซ้าย บน - ขวา ล่าง - ขวา เหนือปุ่มมีมุมมองภาพ (หรือ UIView) ตอนนี้สมมติว่าผู้ใช้แตะที่ปุ่มบน - ซ้าย รูปภาพ / มุมมองด้านบนควรปัดที่มุมนั้น ฉันมีปัญหาในการใช้มุมโค้งมนกับ UIView ตอนนี้ฉันใช้รหัสต่อไปนี้เพื่อใช้มุมโค้งมนกับแต่ละมุมมอง: // imgVUserImg is a image view on IB. imgVUserImg.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"any Url Here"]; CALayer *l = [imgVUserImg layer]; [l setMasksToBounds:YES]; [l setCornerRadius:5.0]; [l setBorderWidth:2.0]; [l setBorderColor:[[UIColor …

1
“ ผู้รับประเภท 'CALayer' สำหรับข้อความอินสแตนซ์คือการประกาศไปข้างหน้า "หมายความว่าอย่างไร
ฉันกำลังย้ายบล็อกโค้ดจากโปรเจ็กต์ iOS4 ไปยัง iOS5 และฉันมีปัญหากับ ARC รหัสสร้าง PDF จากการจับภาพหน้าจอ รหัสการสร้าง PDF UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); บรรทัด renderInContext [captureView.layer renderInContext:pdfContext]; สร้างข้อผิดพลาดต่อไปนี้ Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration มีความคิดอะไรเกิดขึ้นที่นี่?

5
CALayer ที่มีรูใสอยู่
ฉันมีมุมมองที่เรียบง่าย (ด้านซ้ายของภาพ) และฉันต้องการสร้างภาพซ้อนทับ (ด้านขวาของภาพ) ให้กับมุมมองนี้ ภาพซ้อนทับนี้ควรมีความทึบแสงดังนั้นการมองเห็นจึงยังคงมองเห็นได้บางส่วน ที่สำคัญที่สุดการวางซ้อนนี้ควรมีรูวงกลมตรงกลางเพื่อไม่ให้ซ้อนทับตรงกลางของมุมมอง (ดูภาพต่อไปนี้) ฉันสามารถสร้างวงกลมได้ง่ายๆดังนี้: int radius = 20; //whatever CAShapeLayer *circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath; circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius, CGRectGetMidY(view.frame)-radius); circle.fillColor = [UIColor clearColor].CGColor; และภาพซ้อนทับแบบ "เต็ม" แบบนี้: CAShapeLayer *shadow = [CAShapeLayer layer]; shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath; shadow.position …

6
อะไรคือความแตกต่างระหว่าง UIView และ CALayer?
ทั้งสองมีแอตทริบิวต์ส่วนใหญ่เหมือนกันทั้งสองสนับสนุนภาพเคลื่อนไหวประเภทต่างๆทั้งคู่แสดงข้อมูลที่แตกต่างกัน อะไรคือความแตกต่างระหว่าง UIView และ CALayer?
103 ios  uiview  uikit  calayer 

8
CALayers ไม่ได้รับการปรับขนาดตามการเปลี่ยนแปลงขอบเขตของ UIView ทำไม?
ฉันมีชั้นย่อยที่เพิ่มเข้ามาในเลเยอร์UIViewประมาณ 8 CALayerชั้น ถ้าผมปรับเปลี่ยนมุมมองขอบเขตของ (animated) แล้วมุมมองของตัวเองหดตัว (ฉันจะตรวจสอบด้วยbackgroundColor) แต่ขนาด sublayers' ยังคงไม่เปลี่ยนแปลง วิธีแก้ปัญหานี้?

7
วิธีรับข้อความใน CATextLayer ให้ชัดเจน
ฉันได้ทำการCALayerเพิ่มCATextLayerและข้อความออกมาพร่ามัว ในเอกสารพวกเขาพูดถึง "การลบรอยหยักแบบพิกเซลย่อย" แต่นั่นไม่ได้มีความหมายกับฉันมากนัก ใครมีข้อมูลโค้ดที่ทำให้CATextLayerมีข้อความที่ชัดเจน นี่คือข้อความจากเอกสารของ Apple: หมายเหตุ: CATextLayer ปิดการใช้งานการลบรอยหยักพิกเซลย่อยเมื่อแสดงผลข้อความ สามารถวาดข้อความได้โดยใช้การลบรอยหยักแบบพิกเซลย่อยเท่านั้นเมื่อประกอบเข้ากับพื้นหลังทึบแสงที่มีอยู่ในเวลาเดียวกันกับที่มีการแรสเตอร์ ไม่มีวิธีใดที่จะวาดข้อความลบพิกเซลย่อยด้วยตัวเองไม่ว่าจะเป็นรูปภาพหรือเลเยอร์โดยแยกจากกันก่อนที่จะมีพิกเซลพื้นหลังเพื่อสานพิกเซลข้อความเข้าไป การตั้งค่าคุณสมบัติความทึบของเลเยอร์เป็นใช่จะไม่เปลี่ยนโหมดการแสดงผล ประโยคที่สองบอกเป็นนัยว่าเราจะได้ข้อความที่ดูดีถ้าcompositesเป็นข้อความexisting opaque background at the same time that it's rasterized. ที่ดี แต่ฉันจะประกอบมันได้อย่างไรและคุณจะให้พื้นหลังทึบแสงได้อย่างไรและคุณจะแรสเตอร์ได้อย่างไร รหัสที่พวกเขาใช้ในตัวอย่างของเมนูคีออสก์มีดังนี้: (เป็น OS X ไม่ใช่ iOS แต่ฉันคิดว่ามันใช้งานได้!) NSInteger i; for (i=0;i<[names count];i++) { CATextLayer *menuItemLayer=[CATextLayer layer]; menuItemLayer.string=[self.names objectAtIndex:i]; menuItemLayer.font=@"Lucida-Grande"; menuItemLayer.fontSize=fontSize; menuItemLayer.foregroundColor=whiteColor; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" …

17
เอฟเฟกต์เงาด้านในบนเลเยอร์ UIView?
ฉันมี CALayer ดังต่อไปนี้: CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = CGRectMake(8, 57, 296, 30); gradient.cornerRadius = 3.0f; gradient.colors = [NSArray arrayWithObjects:(id)[RGB(130, 0, 140) CGColor], (id)[RGB(108, 0, 120) CGColor], nil]; [self.layer insertSublayer:gradient atIndex:0]; ฉันต้องการเพิ่มเอฟเฟกต์เงาภายในแต่ฉันไม่ค่อยแน่ใจว่าจะทำอย่างไร ฉันคิดว่าฉันจะต้องวาดใน drawRect อย่างไรก็ตามสิ่งนี้จะเพิ่มเลเยอร์ที่ด้านบนของวัตถุ UIView อื่น ๆ เนื่องจากควรจะเป็นแถบที่อยู่ด้านหลังปุ่มบางปุ่มดังนั้นฉันจึงสูญเสียสิ่งที่ต้องทำ? ฉันสามารถเพิ่มเลเยอร์อื่นได้ แต่ไม่แน่ใจว่าจะบรรลุเอฟเฟกต์เงาภายในได้อย่างไร (เช่นนี้: ช่วยชื่นชม ...

7
iOS White to Transparent Gradient Layer เป็นสีเทา
ฉันใส่ CAGradientLayer ไว้ที่ด้านล่างของมุมมองรายละเอียดเล็ก ๆ ที่จะปรากฏขึ้นที่ด้านล่างของแอป อย่างที่คุณเห็นฉันตั้งค่าสีจากสีขาวเป็นสีใส แต่มีสีเทาแปลก ๆ ที่กำลังปรากฏขึ้น ความคิดใด ๆ ? // Set up detail view frame and gradient [self.detailView setFrame:CGRectMake(0, 568, 320, 55)]; CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = self.detailView.bounds; layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; layer.startPoint = CGPointMake(1.0f, 0.7f); layer.endPoint = CGPointMake(1.0f, 0.0f); [self.detailView.layer …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.