, поэтому я делаю свое первое приложение 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;
Вторая проблема : при попытке округлить два верхних угла прокрутки, содержимое внутри прокрутки видимость исчезает.
Это изображение первого подпредставления.
Это изображение второго subview.
У меня также есть подозрение, что это вызвано моей функцией, которую я использую для округления верхних краев.
Вот функция расширения, которую я сделал для 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);
Любая помощь будет высоко ценится. Я застрял на этих двух проблемах и не могу найти что-либо в Интернете (возможно, потому что я не правильно формулирую это, но я не знаю, как описать эти проблемы). Спасибо!