Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPad上的横向iOS上水平绘制绘画代码内容中心? 我试图在屏幕中间画一些画图代码,这有点混乱。_Ios_Objective C_Ipad_Cocoa_Paintcode - Fatal编程技术网

如何在iPad上的横向iOS上水平绘制绘画代码内容中心? 我试图在屏幕中间画一些画图代码,这有点混乱。

如何在iPad上的横向iOS上水平绘制绘画代码内容中心? 我试图在屏幕中间画一些画图代码,这有点混乱。,ios,objective-c,ipad,cocoa,paintcode,Ios,Objective C,Ipad,Cocoa,Paintcode,我真的不确定规模或横向方向是否会影响这一点 我在viewDidLoad中创建了UIView子类和addSubview,如下所示 MenuTitleView *fancyView = [[MenuTitleView alloc] initWithFrame:self.view.bounds]; [[self view] addSubview:fancyView]; 而不是PaintCode给我的尺寸 CGRect textRect = CGRectMake(0, 0, 418, 129); 我

我真的不确定规模或横向方向是否会影响这一点

我在viewDidLoad中创建了UIView子类和addSubview,如下所示

MenuTitleView *fancyView = [[MenuTitleView alloc] initWithFrame:self.view.bounds];
[[self view] addSubview:fancyView];
而不是PaintCode给我的尺寸

CGRect textRect = CGRectMake(0, 0, 418, 129);
我试图确定屏幕/视图宽度和画布宽度的大小

我尝试过各种各样的事情,但都没有成功

CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
CGFloat w = screenRect.size.width;
CGFloat width = 500;
CGFloat height = 200;
CGFloat x = (w - width) * 0.5f;
CGFloat y = 20;
CGRect textRect = CGRectMake(x, y, width, height);

如果你想把你的观点放在屏幕中间,试试这个

    CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
    CGFloat width = 500;
    CGFloat height = 200;
    CGFloat x = CGRectGetMidX(screenRect);
    CGFloat y = 20;
    CGRect textRect = CGRectMake(x, y, width, height);
已经测试过的系统正在运行


祝你好运

缩放不是问题,因为石英和UIKit现在以“点”而不是像素工作,所以这已经被考虑在内了。但是方向不是,[UIScreen mainScreen]将返回相同的rect,无论是应用程序帧还是边界等,它都不知道方向

我喜欢将一个解决方案放在UIView或UIViewController的一个类别中,因为您可以大量重用它。像这样的

    -(CGRect )workingCanvas{

    CGRect screenRect = [UIScreen mainScreen].bounds;
    BOOL landscape = UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]);

    CGRect result = CGRectZero;

    CGFloat lesserDimension = (screenRect.size.width < screenRect.size.height) ? screenRect.size.width : screenRect.size.height;

    CGFloat greaterDimension = (screenRect.size.width > screenRect.size.height) ? screenRect.size.width : screenRect.size.height;

    result.size.width = (landscape) ? greaterDimension : lesserDimension;
    result.size.height = (landscape) ? lesserDimension : greaterDimension;

    if ([[UIApplication sharedApplication]isStatusBarVisible]){

    result.size.height -= [[UIApplication sharedApplication]statusBarFrame].size.height;
    }

return result;

}

固定值width=500.0等将无法与不同的设备和方向配合使用。另外,CGRectGetMidX无法找到原点。x,你应该减去一半的宽度以使其居中…正如我所说的,已经过测试并正在工作,而不是使用减法调整锚点,你的视图将居中。这不是一个像你这样的奇特答案,但它是否工作正常谢谢,所以我认为我在使用AddSubView时使用它。但是,使用paintcode提供的drawrect代码或我在上面发布的居中代码,视图必须在屏幕外。啊,排序后,我注释掉了ISStatubavisible调用,因为它导致了错误,然后它生成了一个负高度值,取下该值,并使用“CGFloat x=self.bounds.size.width/2-500/2;”工作顺利: