Изменить ширину Мастер в UISplitViewController - PullRequest
41 голосов
/ 01 июня 2010

В руководстве по программированию для iPad сказано, что левая панель splitView зафиксирована на 320 точках.Но 320 пикселей для моего главного контроллера просмотра это слишком много.Я хотел бы уменьшить его и дать больше места для детального просмотра контроллера.Возможно ли это в любом случае?

Ссылка на документ , который говорит о фиксированной ширине.

Ответы [ 16 ]

0 голосов
/ 10 апреля 2019
// in UISplitViewController subclass
// let more space for detail in portrait mode
- (void)viewWillLayoutSubviews
{
    CGFloat width;
    if (UIInterfaceOrientationIsPortrait(UIApplication.sharedApplication.statusBarOrientation)){
        width = CGRectGetWidth(self.view.bounds) * 0.25f;
    }
    else {
        width = CGRectGetWidth(self.view.bounds) * 0.33f;
    }
    width = (NSInteger)fminf(260, fmaxf(120, width));
    self.minimumPrimaryColumnWidth = width;
    self.maximumPrimaryColumnWidth = width;

    [super viewWillLayoutSubviews];
}
0 голосов
/ 12 июня 2017

В моем случае мне пришлось установить максимум и минимум, чтобы эта работа работала

mySplitViewController.preferredDisplayMode = .allVisible;
mySplitViewController.maximumPrimaryColumnWidth = UIScreen.main.bounds.width/2;
mySplitViewController.minimumPrimaryColumnWidth = UIScreen.main.bounds.width/2; 
0 голосов
/ 15 марта 2017

Swift 3.0 вы используете как

let widthfraction = 2.0 //Your desired value for me 2.0    
splitViewController?.preferredPrimaryColumnWidthFraction = 0.40
let minimumWidth = min((splitViewController?.view.bounds.size.width)!,(splitViewController?.view.bounds.height)!)
splitViewController?.minimumPrimaryColumnWidth = minimumWidth / widthFraction
splitViewController?.maximumPrimaryColumnWidth = minimumWidth / widthFraction
let leftNavController = splitViewController?.viewControllers.first as! UINavigationController
leftNavController.view.frame = CGRect(x: leftNavController.view.frame.origin.x, y: leftNavController.view.frame.origin.y, width: (minimumWidth / widthFraction), height: leftNavController.view.frame.height)
0 голосов
/ 12 октября 2016

ViewController.h @property(nonatomic, assign) CGFloat maximumPrimaryColumnWidth NS_AVAILABLE_IOS(8_0);

ViewController.m

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

    if (SYSTEM_VERSION_LESS_THAN(@"10.0")) {

    [self setValue:[NSNumber numberWithFloat:200.0]forKey:@"_masterColumnWidth"];

    }else{

    self.maximumPrimaryColumnWidth = 200;
    self.splitViewController.maximumPrimaryColumnWidth = self.maximumPrimaryColumnWidth;

     }
0 голосов
/ 17 июня 2015

Вы можете использовать GSSplitViewController . Этот будет работать на iOS 7 и 8

splitView = [[GSSplitViewController alloc] init];
splitView.masterPaneWidth = 180;

Вы также можете включить его, добавив pod 'GSSplitViewController' к вашему Podfile.

0 голосов
/ 24 августа 2010

у меня этот код работает :) 1001 *

@interface UISplitViewController(myExt) - (void)setNewMasterSize:(float)size; @end</p> <p>@implementation UISplitViewController(myExt) - (void)setNewMasterSize:(float)size { _masterColumnWidth = size; } @end

и используйте его для каждой операции с видом (например, вращение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...