Вы не можете сделать это напрямую, потому что DialogViewController похож на UITableViewController и UITableView, у которых есть некоторые особенности, чтобы заполнить его содержащее пространство. Есть хитрый способ обойти это, когда вам нужно будет создать «контейнер» UIView для желаемой ширины и добавить его в качестве подпредставления в UIViewController. Теперь сделайте ваш DialogViewController и добавьте его View как подпредставление этого контейнера. Диалог будет расширен до размера контейнера, а не родительского представления.
У вас должно получиться что-то вроде этого:
public class MyController : UIViewController
{
UIView container;
DialogViewController dvc;
public override void ViewDidLoad()
{
base.ViewDidLoad();
container = new UIView();
dvc = new DialogViewController(UITableViewStyle.Grouped, null, true);
dvc.Root = new Root("Title") {
new Section() {
new StringElement("Hello")
}
};
View.AddSubview(container);
}
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
// Whatever width you want
float newWidth = View.Bounds.Width / 2;
container.Frame = new RectangleF(0, 0, newWidth, View.Bounds.Height);
// This is a workaround so that the TableView fills the container view
// after it is sized.
container.AddSubView(dvc.View);
}
}