2016-08-23 2 views
0

В моей раскадровке я создал следующую структуру. У меня есть UIViewController, который содержит UIView, который содержит кнопки, текст и меньший UIView. Я хотел бы привлечь к меньшему UIView.Как использовать базовую графику в подвижущем UIViewController в Xamarin iOS?

Текущий рабочий код у меня есть:

public partial class MyDrawingController : UIViewController 
{ 
    public MyDrawingController (IntPtr handle) : base(handle) { } 

    public override void LoadView() 
    { 
     base.LoadView(); 
     View = new NewDrawingView(); 
    } 
} 

public class NewDrawingView : UIView 
{ 
    public NewDrawingView() : base() {} 

    public override void Draw (CGRect rect) 
    { 
     base.Draw (rect); 
     DrawMe (rect); 
    } 

    public void DrawMe(CGRect rect) { 
     // Drawing code 
    } 
} 

Это приводит к содержанию более крупного UIView в настоящее время полностью заменен мой рисунок (покрывающий мой текст и кнопку).

NewDrawingView = new NewDrawingView(); 

Хотя это вызывает конструктор, метод Draw в UIView никогда не вызывается, тем самым не давая быть правильный доступ к контексту UIGraphics сделать рисунок.

Edit:

View.AddSubview(new NewDrawingView()); 

вызывает также конструктор, а не метод Draw (и не появляется, чтобы отобразить новый вид). Как я могу называть метод draw для subview или иначе рисовать внутри подвью?

+1

Почему бы просто не добавить subview к виду вашего контроллера? Это охватывает все существующие элементы управления, и вы можете настроить его размер, либо устанавливая «Frame», либо используя ограничения AutoLayout. – Krumelur

+0

@Krumelur Спасибо за ответ. Я обновил свой вопрос. Я сбиаю с толку, что там я не могу найти ни одного примера в Интернете, отображающего subview в главном представлении (или на частичном представлении). Вы видели такой пример? –

ответ

0

Найдено, что мне нужно в конце концов на:

How to add subview above the keyboard in monotouch/Xamarin.Ios?

public override void LoadView() 
{ 
    base.LoadView(); 
    NewDrawingView drawingView = new NewDrawingView{ 
     Frame = new RectangleF (0, 0, 100, 100) 
    }; 
    View.AddSubview (drawingView); 
} 

Этот код правильно инициализирует мой чертежный вид и вызывает метод рисования при добавлении подвид на главном экране контроллера представления.

Смежные вопросы