所以我正在制作我的第一个Swift iOS应用。我有两个问题需要帮助。
第一个问题:我在子视图中遇到了一些问题,这些子视图是通过编程创建的,当显示在小屏幕上时无法正确对齐。
第一张图片显示了我打算如何显示滚动视图。 (iPhone 11 Pro Max)
但是,这是在较小的屏幕上显示的样子。 (iPhone 8)
[我认为问题在于我以编程方式创建子视图,因为滚动视图的大小正是我想要的大小。
这是我在viewDidLoad()
中使用的快速代码:
:当尝试使滚动视图的顶部两个角变圆时,滚动视图内部的内容似乎消失了。var districtNewsSize = 10; var districtNewsFrame = CGRect(x:0,y:0,width:0,height:0); // District News ----- districtNewsPageControl.numberOfPages = districtNewsSize; for aIndex in 0..<districtNewsSize{ districtNewsFrame.origin.x = districtNewsScrollView.frame.size.width * CGFloat(aIndex); districtNewsFrame.size = districtNewsScrollView.frame.size; // create content in scrollview let contentView = UIButton(frame: districtNewsFrame); contentView.backgroundColor = makeColor(r: 147, g: 66, b: 78); contentView.setTitle("titletext", for: .normal); contentView.layer.cornerRadius = 20; // just to show how displaced the views are // add contentview to scrollview self.districtNewsScrollView.addSubview(contentView); } // change horizontal size of scrollview districtNewsScrollView.contentSize = CGSize(width: districtNewsScrollView.frame.size.width * CGFloat(districtNewsSize), height: districtNewsScrollView.frame.size.height); districtNewsScrollView.delegate = self;
第二个问题
这是第一个子视图的图片。
这是第二个子视图的图片。
我也怀疑这是由于我使用的功能使顶部边缘变圆。
这是我为UIScrollView制作的扩展功能:
extension UIScrollView{ func setRoundedEdge(corners:UIRectCorner, radius: CGFloat){ // label.setRoundedEdge([.TopLeft, . TopRight], radius: 10) let maskPath1 = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) let maskLayer1 = CAShapeLayer() maskLayer1.frame = bounds maskLayer1.path = maskPath1.cgPath layer.mask = maskLayer1 } }
这就是我在
viewDidLoad()
中调用函数的方式:
districtNewsScrollView.setRoundedEdge(corners: [.topRight,.topLeft], radius: 30);
任何帮助将不胜感激。我一直被这两个问题困扰,在网上找不到任何东西(可能是因为我的措词不正确,但我不知道如何描述这些问题)。谢谢!
所以我正在制作我的第一个Swift iOS应用。我有两个问题需要帮助。第一个问题:我遇到了一些以编程方式创建的子视图问题,这些问题不是...
我假设您使用情节提要进行滚动视图并以编程方式在viewDidLoad中添加子视图,
这是我解决这两个问题的方法: