Пожалуйста, не сразу дискредитируйте это дубликат, я был на stackoverflow, как 2 дня, пытаясь всеми способами сделать это, прочитал много статей в блогах (которые возможно, были слегка датированы) и до сих пор не повезло.Проблема с созданием прокручиваемого UIView (swift + Interface Builder)
В принципе, у меня есть пользовательский UIView, который предназначен для рисования большого количества кругов (это только отправная точка), и я не могу получить представление, чтобы прокрутить вниз до тех, что были за исключением видимых кругов при начальной загрузке. Я сделал цикл for около 200 из них, чтобы убедиться, что есть что-то прокрутить.
вот мой взгляд код:
import UIKit
class Draw2D: UIView {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder);
}
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
let colorSpace = CGColorSpaceCreateDeviceRGB();
let components: [CGFloat] = [0.0, 0.0, 1.0, 1.0];
let color = CGColorCreate(colorSpace, components);
CGContextSetStrokeColorWithColor(context, color);
var ctr = 0;
var ctr2 = 0;
for(var i:Int = 1; i<200; i++){
var ii: CGFloat=CGFloat(10+ctr);
var iii: CGFloat = CGFloat(30+ctr2);
CGContextStrokeEllipseInRect(context, CGRectMake(ii, iii, 33, 33));
if(ctr<200)
{
ctr+=160;
}else{
ctr=0;
ctr2+=50;
}
}
CGContextStrokePath(context);
}
}
В интерфейсе строитель, установить класс представления в Draw2D и контроллер для моего пользовательского класса ViewController. Класс контроллера вида в настоящее время является стандартным, без добавления дополнительных параметров.
Я попытался перетащить вид прокрутки на экране, я попробовал удалить стандартный вид, добавив прокрутку, а затем нарисовал вид Draw2D поверх этого, и это не сработало. Я попытался изменить размер прокрутки, чтобы сделать его меньше, чем мой контент (draw2d), и ничего. Я попытался снять флажок с автоматической компоновки, а также изменить симулированный размер на произвольную форму в соответствии с определенными учебниками, которые я нашел в Интернете.
Я также в какой-то момент попытался создать прокрутку в программном виде в UIView и добавить его как подзаголовок, который не помог, возможно, я сделал это неправильно, я не знаю, но у меня действительно заканчиваются варианты и источники для генерации идей.
Должен ли я создать этот класс программно в контроллере представления? Дело в том, что я использую раскадровку. В таком случае следует перетащить представление или просмотреть прокрутку? Когда я делаю это, вызывается требуемый init, вызывающий ошибку, поэтому я спрашиваю, нужно ли мне создавать это представление в коде или есть ли способ сделать это из раскадровки с помощью init (frame) называется? –
Я не слишком много работаю с раскадными версиями, но если вы использовали это в своем ViewController, просто добавьте следующее в метод viewDidLoad: var draw: Draw2D = Draw2D (frame: self.view.frame) self .view.addSubview (draw) –
работал отлично. Благодаря ! –