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

UIView เป็นคลาสหนึ่งในกรอบ UIKit ของ iOS กำหนดพื้นที่สี่เหลี่ยมบนหน้าจอและอินเทอร์เฟซสำหรับจัดการเนื้อหาในพื้นที่นั้น องค์ประกอบ UI ทั้งหมดเป็นคลาสย่อยของ UIView หรืออยู่ใน UIView

4
ฉันจะสร้างคลาสมุมมอง iOS ที่กำหนดเองและสร้างอินสแตนซ์สำเนาหลายชุด (ใน IB) ได้อย่างไร
ฉันกำลังสร้างแอพที่จะมีตัวจับเวลาหลายตัวซึ่งโดยพื้นฐานแล้วจะเหมือนกันทั้งหมด ฉันต้องการสร้างคลาสแบบกำหนดเองที่ใช้โค้ดทั้งหมดสำหรับตัวจับเวลาตลอดจนเค้าโครง / ภาพเคลื่อนไหวดังนั้นฉันจึงมีตัวจับเวลาที่เหมือนกัน 5 ตัวที่ทำงานแยกกัน ฉันสร้างเลย์เอาต์โดยใช้ IB (xcode 4.2) และโค้ดทั้งหมดสำหรับตัวจับเวลาขณะนี้อยู่ในคลาส viewcontroller ฉันมีปัญหาในการห่อสมองของฉันเกี่ยวกับวิธีการห่อหุ้มทุกอย่างลงในคลาสที่กำหนดเองแล้วเพิ่มลงในตัวควบคุมมุมมองความช่วยเหลือใด ๆ จะได้รับการชื่นชมมาก

8
วิธีควบคุมเงากระจายและเบลอ
ฉันได้ออกแบบองค์ประกอบ UI ในแบบร่างและหนึ่งในนั้นมีเงาที่มีความเบลอ 1 และการแพร่กระจาย 0 ฉันดูที่เอกสารสำหรับคุณสมบัติเลเยอร์มุมมองและเลเยอร์ไม่มีชื่ออะไรแพร่กระจายหรือเบลอหรืออะไรที่เทียบเท่า (ตัวควบคุมเดียวคือ only shadowOpacity) จะควบคุมสิ่งต่างๆเช่นเบลอและกระจายได้อย่างไร? แก้ไข: นี่คือการตั้งค่าของฉันใน Sketch: และนี่คือสิ่งที่ฉันต้องการให้เงาของฉันดูเหมือน: และนี่คือสิ่งที่ดูเหมือนในขณะนี้: หมายเหตุคุณต้องคลิกที่ภาพเพื่อดูเงาจริงๆ รหัสของฉันมีดังนี้: func setupLayer(){ view.layer.cornerRadius = 2 view.layer.shadowColor = Colors.Shadow.CGColor view.layer.shadowOffset = CGSize(width: 0, height: 1) view.layer.shadowOpacity = 0.9 view.layer.shadowRadius = 5 }


7
วิธีโหลดไฟล์ xib ใน UIView
ฉันได้ค้นหาทุกที่และจนถึงตอนนี้ก็ไม่มีอะไรได้ผลสำหรับฉัน โดยทั่วไปฉันต้องการมีไฟล์. xib ที่เรียกว่า rootView.xib และภายในนั้นฉันต้องการมี UIView (เรียกว่า containerView) ที่ใช้เวลาเพียงครึ่งหนึ่งของหน้าจอ (ดังนั้นจะมีมุมมองปกติและมุมมองใหม่) จากนั้นฉันต้องการไฟล์. xib อื่นที่เรียกว่า firstView.xib และโหลดภายใน containerView ดังนั้นฉันสามารถมีหลายอย่างใน firstView.xib และสิ่งต่าง ๆ มากมายใน rootView.xib และโหลด firstView.xib ของฉันภายใน containerView ใน rootView.xib แต่เนื่องจากใช้เวลาเพียงครึ่งหนึ่งของหน้าจอคุณจึงยังคงเห็น สิ่งต่างๆบน rootView.xib
111 ios  objective-c  uiview  xib 

2
clipsToBounds ทำงานอย่างไร
ผมอยากจะทราบวิธีการที่จะใช้สถานที่ให้บริการUIViewclipsToBounds เอกสารอย่างเป็นทางการระบุว่า: clipsToBounds ทรัพย์สิน ค่าบูลีนที่กำหนดว่ามุมมองย่อยถูก จำกัด ไว้ที่ขอบเขตของมุมมองหรือไม่ การอภิปราย การตั้งค่านี้เพื่อYESทำให้มุมมองย่อยถูกตัดไปที่ขอบเขตของเครื่องรับ หากตั้งค่าเป็นมุมมองย่อยNOที่เฟรมขยายเกินขอบเขตที่มองเห็นได้ของเครื่องรับจะไม่ถูกตัดออก NOค่าเริ่มต้นคือ แต่ฉันไม่ชัดเจนว่านี่หมายถึงอะไรกันแน่ ฉันควรใช้clipsToBoundsอย่างไร? ผลของการตั้งค่าคุณสมบัตินี้เป็นYESอย่างไร หรือเพื่อNO?
110 ios  uiview  uikit  frame  bounds 

7
วิธีใดเป็นวิธีที่ดีที่สุดในการเพิ่มเงาลงใน UIView ของฉัน
ฉันกำลังพยายามเพิ่มเงาตกในมุมมองที่ซ้อนทับกันมุมมองจะยุบลงทำให้สามารถมองเห็นเนื้อหาในมุมมองอื่นได้ในหลอดเลือดดำนี้ฉันต้องการview.clipsToBoundsเปิดต่อเพื่อที่เมื่อมุมมองยุบเนื้อหาของพวกเขาจะถูกตัดออก ดูเหมือนว่าจะทำให้ฉันเพิ่มเงาหล่นลงในเลเยอร์ได้ยากเพราะเมื่อฉันเปิดclipsToBoundsเงาก็จะถูกตัดออกไปด้วย ฉันพยายามปรับแต่งview.frameและview.boundsเพื่อเพิ่มเงาหล่นลงในเฟรม แต่ปล่อยให้ขอบเขตมีขนาดใหญ่พอที่จะล้อมรอบได้ แต่ฉันไม่มีโชคกับเรื่องนี้ นี่คือรหัสที่ฉันใช้เพื่อเพิ่ม Shadow (ใช้ได้กับclipsToBoundsOFF เท่านั้นตามที่แสดง) view.clipsToBounds = NO; view.layer.shadowColor = [[UIColor blackColor] CGColor]; view.layer.shadowOffset = CGSizeMake(0,5); view.layer.shadowOpacity = 0.5; นี่คือภาพหน้าจอของเงาที่ถูกนำไปใช้กับเลเยอร์สีเทาที่สว่างที่สุดด้านบน หวังว่านี่จะช่วยให้ทราบว่าเนื้อหาของฉันจะทับซ้อนกันอย่างไรหากclipsToBoundsปิดอยู่ ฉันจะเพิ่มเงาให้กับUIViewเนื้อหาของฉันและตัดเนื้อหาของฉันได้อย่างไร แก้ไข: แค่อยากจะเพิ่มว่าฉันได้เล่นกับการใช้ภาพพื้นหลังที่มีเงาซึ่งทำงานได้ดี แต่ฉันก็ยังอยากรู้วิธีแก้ปัญหาที่ดีที่สุดสำหรับสิ่งนี้

17
“ จาก View Controller” หายไปโดยใช้ UIViewControllerContextTransitioning
ฉันพบปัญหาหนึ่งและได้อธิบายไว้ด้านล่าง ฉันใช้UIViewControllerContextTransitioningสำหรับการเปลี่ยนที่กำหนดเอง ฉันมีตัวควบคุมมุมมอง 2 ตัวตัวควบคุมมุมมองแรกและตัวควบคุมมุมมองที่สอง ตอนนี้ฉันต้องการเพิ่มตัวควบคุมมุมมองที่สองในตัวควบคุมมุมมองแรกที่มีภาพเคลื่อนไหว ฉันทำได้สำเร็จแล้วตอนนี้ตัวควบคุมมุมมองที่สองมีความโปร่งใสดังนั้นเราจึงเห็นตัวควบคุมมุมมองแรกด้านล่างตัวควบคุมมุมมองที่สอง แต่ฉันมองไม่เห็นตัวควบคุมมุมมองแรกและฉันเห็นเฉพาะหน้าจอสีดำด้านล่างตัวควบคุมมุมมองที่สอง -(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{ self.transitionContext = transitionContext; if(self.isPresenting){ [self executePresentationAnimation:transitionContext]; } else{ [self executeDismissalAnimation:transitionContext]; } } -(void)executePresentationAnimation:(id<UIViewControllerContextTransitioning>)transitionContext{ UIView* inView = [transitionContext containerView]; UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; CGRect offScreenFrame = inView.frame; offScreenFrame.origin.y = inView.frame.size.height; toViewController.view.frame = offScreenFrame; toViewController.view.backgroundColor = [UIColor …

2
อะไรคือความสัมพันธ์ระหว่าง setNeedsLayout ของ UIView, layoutIfNeeded และ layoutSubviews?
ใครสามารถให้คำอธิบายที่ชัดเจนเกี่ยวกับความสัมพันธ์ระหว่างUIView's setNeedsLayout, layoutIfNeededและlayoutSubviewsวิธีการ? และตัวอย่างการใช้งานที่จะใช้ทั้งสามอย่าง ขอบคุณ. สิ่งที่ทำให้ฉันสับสนคือถ้าฉันส่งsetNeedsLayoutข้อความดูแบบกำหนดเองของฉันสิ่งต่อไปที่จะเรียกใช้หลังจากวิธีนี้คือการlayoutSubviewsข้ามไปlayoutIfNeededเลย จากเอกสารฉันคาดว่าโฟลว์จะsetNeedsLayout> ทำให้layoutIfNeededถูกเรียก> สาเหตุlayoutSubviewsที่จะเรียก
105 iphone  xcode  uiview 

8
ฉันจะเปิด / ปิดการใช้งานข้อ จำกัด ของโครงร่างได้เมื่อใด
ฉันได้ตั้งค่าข้อ จำกัด หลายชุดใน IB และฉันต้องการสลับระหว่างข้อ จำกัด โดยทางโปรแกรมขึ้นอยู่กับสถานะบางอย่าง มีconstraintsAคอลเลกชันเต้าเสียบทั้งหมดซึ่งทำเครื่องหมายว่าติดตั้งจาก IB และconstraintsBคอลเลกชันเต้าเสียบซึ่งทั้งหมดถูกถอนการติดตั้งใน IB ฉันสามารถสลับระหว่างสองชุดโดยทางโปรแกรมได้ดังนี้: NSLayoutConstraint.deactivateConstraints(constraintsA) NSLayoutConstraint.activateConstraints(constraintsB) แต่ ... ฉันคิดไม่ออกว่าจะทำอย่างนั้นเมื่อไหร่ ดูเหมือนว่าฉันควรจะทำแบบนั้นได้ในครั้งเดียวviewDidLoadแต่ก็ไม่สามารถทำได้ ฉันได้ลองโทรview.updateConstraints()และview.layoutSubviews()หลังจากตั้งค่าข้อ จำกัด แล้ว แต่ก็ไม่มีประโยชน์ ฉันพบว่าถ้าฉันตั้งค่าข้อ จำกัด ในviewDidLayoutSubviewsทุกอย่างทำงานได้ตามที่คาดไว้ ฉันเดาว่าฉันอยากรู้สองสิ่ง ... ทำไมฉันถึงได้รับพฤติกรรมนี้ เป็นไปได้หรือไม่ที่จะเปิด / ปิดข้อ จำกัด จาก viewDidLoad?

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

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

8
รับตำแหน่งของ UIView ตามมุมมองที่ยอดเยี่ยมของ superview
ฉันมี UIView ซึ่งฉันได้จัดเรียง UIButtons ฉันต้องการค้นหาตำแหน่งของ UIButtons เหล่านั้น ฉันรู้ว่าbuttons.frameจะให้ตำแหน่งแก่ฉัน แต่มันจะทำให้ฉันได้ตำแหน่งเฉพาะในส่วนที่เกี่ยวกับมุมมองสูงสุดในทันที มีวิธีใดบ้างที่เราสามารถค้นหาตำแหน่งของปุ่มเหล่านั้นด้วยความเคารพต่อ superview ของ UIButtons superview? ตัวอย่างเช่นสมมติว่ามี UIView ชื่อ "firstView" จากนั้นฉันก็มี UIView "secondView" อีกอัน "SecondView" นี้เป็นมุมมองย่อยของ "firstView" จากนั้นฉันก็มี UIButton เป็นมุมมองย่อยใน "secondView" ->UIViewController.view --->FirstView A ------->SecondView B ------------>Button ตอนนี้มีวิธีใดบ้างที่เราสามารถค้นหาตำแหน่งของ UIButton นั้นเกี่ยวกับ "firstView" ได้หรือไม่?
101 iphone  ios  uiview  uibutton  cgrect 

22
วิธีแปลง UIView เป็นรูปภาพ
ฉันต้องการแปลง UIView เป็นรูปภาพและบันทึกไว้ในแอพของฉัน ใครช่วยบอกวิธีถ่ายภาพหน้าจอหรือแปลงเป็นภาพและวิธีที่ดีที่สุดในการบันทึกลงในแอปคืออะไร (ไม่ใช่ม้วนฟิล์ม) นี่คือรหัสสำหรับมุมมอง: var overView = UIView(frame: CGRectMake(0, 0, self.view.frame.width/1.3, self.view.frame.height/1.3)) overView.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)-self.view.frame.height/16); overView.backgroundColor = UIColor.whiteColor() self.view.addSubview(overView) self.view.bringSubviewToFront(overView)
99 ios  swift  uiview  screenshot 

6
วิธีที่ถูกต้องในการโหลด Nib สำหรับคลาสย่อย UIView
ฉันทราบว่ามีการถามคำถามนี้มาก่อน แต่คำตอบขัดแย้งกันและฉันสับสนดังนั้นโปรดอย่าทำให้ฉันตกใจ ฉันต้องการมีUIViewคลาสย่อยที่ใช้ซ้ำได้ในแอปของฉัน ฉันต้องการอธิบายอินเทอร์เฟซโดยใช้ไฟล์ nib ตอนนี้สมมติว่าเป็นมุมมองตัวบ่งชี้การโหลดที่มีตัวบ่งชี้กิจกรรมอยู่ในนั้น ฉันต้องการให้เหตุการณ์บางอย่างสร้างอินสแตนซ์ของมุมมองนี้และทำให้เคลื่อนไหวในมุมมองของตัวควบคุมมุมมอง ฉันสามารถอธิบายอินเทอร์เฟซของมุมมองได้อย่างไม่มีปัญหาโดยทางโปรแกรมสร้างองค์ประกอบโดยทางโปรแกรมและตั้งค่าเฟรมภายในวิธีการเริ่มต้นเป็นต้น ฉันจะทำสิ่งนี้โดยใช้ปลายปากกาได้อย่างไร? การรักษาขนาดที่กำหนดในตัวสร้างอินเทอร์เฟซโดยไม่ต้องกำหนดกรอบ ฉันทำแบบนี้แล้ว แต่ฉันแน่ใจว่ามันผิด (มันเป็นเพียงมุมมองที่มีตัวเลือกอยู่ในนั้น): - (id)initWithDataSource:(NSDictionary *)dataSource { self = [super init]; if (self){ self = [[[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", [self class]] owner:self options:nil] objectAtIndex:0]; self.pickerViewData = dataSource; [self configurePickerView]; } return self; } แต่ฉันเขียนทับตัวเองและเมื่อฉันสร้างอินสแตนซ์: FSASelectView *selectView = [[FSASelectView alloc] initWithDataSource:selectViewDictionary]; …


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.