这是一个非常简单的问题,我似乎无法找到答案.这该怎么做 :
CGRectMake(1, 3, size)
Run Code Online (Sandbox Code Playgroud)
要么
CGRectMake(pointB, size)
Run Code Online (Sandbox Code Playgroud)
要么
CGRectMake(pointB, size.width, size.height)
Run Code Online (Sandbox Code Playgroud)
代替
CGRectMake(self.someview.frame.origin.x, self.someview.frame.origin.y, self.someotherview.frame.size.width, self.someotherview.frame.size.height)
Run Code Online (Sandbox Code Playgroud)
?? 谢谢 !:)
编辑:
该方法CGRectmake需要CGFloat.我希望它采取CGSize和/或CGpoint作为方法的参数.
我有一个UIImage我想在iPhone 4/4S/5屏幕上显示像素的像素.重要的是它根本没有缩放,但是当我尝试使用时setImage,它会使图像太大.
我UIImageView是在一个UIStoryboard(因为我真的是新手),并设置为"重绘"模式,其他一切默认.其他模式都没有UIImage正确缩放(编辑:即将UIImageViewscontentMode 设置为其他模式不起作用).
我环顾四周,发现了这个:
[self.imageView setImage: image];
self.imageView.frame = CGRectMake(self.imageView.frame.origin.x,
self.imageView.frame.origin.y,
image.size.width,
image.size.height);
Run Code Online (Sandbox Code Playgroud)
这不起作用.我尝试将每个维度减半,它仍然关闭.
更新:我认为事后视网膜显示器正在缩放,因为在我使用的视网膜iPhone 4和非视网膜模拟器模式下,图像占用了相同百分比的屏幕.有什么方法可以将UIImage或UIImageView或项目设置为"视网膜准备"吗?
更新2:通过将每个维度减半使图像变小似乎可行.iPhone 4/4S的像素是2G/3G/3GS的两倍.但这似乎是一个黑客解决方案,我甚至不确定它是否利用视网膜显示像素密度,当我这样做.
我正在尝试为iPad应用创建多个视图.首先,我创建了一个菜单视图,然后根据菜单创建了带坐标的子菜单视图.所以它看起来像这样:

我做了什么:
self.view = [[UIView alloc] initWithFrame:CGRectMake(self.parentViewController.view.frame.size.width, 0, 150, screenHeight)];
Run Code Online (Sandbox Code Playgroud)
但现在在子菜单上我正在尝试创建内容视图,这是一个UINavigationController.试着做同样的事情,我得到了这个结果:

我在做什么(这次在子菜单视图控制器上创建框架):
CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width,
0,
[[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
[[UIScreen mainScreen] bounds].size.height);
Run Code Online (Sandbox Code Playgroud)
这是非常不言自明的,但我只是得到子菜单原点并添加其宽度,以便我可以获得正确的边缘坐标.
经过多次尝试,我设法让它工作,因为我注意到CGRectMake正在使用UINavigationController视图的中心来排列它的位置.所以下面的代码:
CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width + 259,
0,
[[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
[[UIScreen mainScreen] bounds].size.height);
Run Code Online (Sandbox Code Playgroud)
产生正确的位置.
这是怎么回事?我认为CGRectMake的起源始终是左上角,但在这个特别的观点实际上是中上(或中间 - 中间,不确定.)我做错了什么?
EDIT1:
这是具有正确位置的框架的控制台输出:

请注意导航栏现在如何定位:

但是x-coord不是250(因为它应该是,因为menu.width + sub-menu.width = 250.)
EDIT2:
我最终放弃了.问题在于自动生成的UINavigationBar,它是由UINavigationViewController创建的.我似乎无法弄清楚如何配置它.如果有人知道答案,我会打开这个问题.
我有宽度为260的UILabel,我有很长的文本(可能大约1000个字符).
我想根据内容设置UILabel的高度.有时我可以有100个字符,有时候我可以有1000个字符.
根据文字,我如何设置UILabel的高度?
注意:我正在以编程方式创建UILabel.
UILabel myLabel = [[UILabel alloc] initWithFrame: CGRectMake (30,50,260, height)];
Run Code Online (Sandbox Code Playgroud)
知道怎么做到这一点?
我尝试的一种方法如下.
我在考虑一行有40个字符.所以我正在做的是找到文本的长度并将其除以40.这将给出我所需的总行数.
但是当有新线路时,这会失败.
这是对的吗?
我是iOS编程的新手.
我正在关注一本指南,这本书正是在意大利语的iOS上.对于第一个应用程序,我必须ViewController.m像这样修改:
#import "ViewController.h"
@implementation ViewController
- (void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
// Release Any chached data, images, etc that aren't in use.
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)datiDettaglioChiudi:(datiDettaglio *)controller{
//altre operazioni possibii dopo la dismissModal
NSLog(@"... di ritorno dal DismissModal...");
[controller dismissViewControllerAnimated:YES completion:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"dettaglio"]){
datiDettaglio *mioController1 = segue.destinationViewController;
[mioController1 setDelegate:self];
//aggiunta di una UILabel - qui è …Run Code Online (Sandbox Code Playgroud) 我有一个子视图,我已经通过使用frame属性并将其值设置为CGRectMake函数的参数值来自定义它的大小.
我已经慢慢但肯定地改变了CGRectMake参数并重新运行应用程序以使子视图在屏幕上的正确位置,但我知道必须有一种更简单的方法.
这是我目前正在做的事情:
UIImageView *halfView = [[UIImageView alloc]initWithImage:image];
[self.view addSubview:halfView];
halfView.frame = CGRectMake(0, 0, 320, 270);
Run Code Online (Sandbox Code Playgroud)
有没有办法让我不必手动将这4个参数输入到CGRectMake中,只需将其设置为屏幕的前50%?
这就是我希望子视图在iphone屏幕上的样子:

感谢您的帮助.
我正在框架中制作图片,然后用户可以在运行时调整帧大小.为了这个目的,我已经UIView在我的主要UIViewController内部和内部做了一个习惯,我UIView放置了2 UIImageView.在xCode的Document Outline Pane中,它的层次结构是:
查看
| --ImageView
| --ImageView
我正在使用这行代码来改变UIView不同条件下的大小,它会相应调整大小:
self.imageObject.frame = CGRectMake(self.imageObject.frame.origin.x ,
self.imageObject.frame.origin.y,
200,
200);
Run Code Online (Sandbox Code Playgroud)
imageObject是我的UIView.当我运行它时,UIView更改的大小,但UIImageView大小保持不变.我也试过为我做同样的事情,UIImageView但它没有用.
[UIScreen mainScreen].bounds.size.height无论iPad应用程序采用何种布局模式,为什么总是返回1024?
我试图有一个基于布局模式动态生成的自定义视图,我总是得到1024的高度?
+ (CGRect)rectForView {
NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height );
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height ) - 100));
}
Run Code Online (Sandbox Code Playgroud) 我通过故事板创建了一个标签.顺序是这样的:查看 - >滚动视图 - >一堆标签.
这是我想要实现的文本输出:12月2日<剩余30天>
<>封闭文本在不同的UI标签中以较小的字母表示.
由于月份名称是动态的并且宽度发生了变化,我尝试使用CGRectMake来改变<>封闭文本的位置.但它没有用.我尝试更改函数的参数,但标签保持不变.它不会从故事板中设置的初始位置移动.
label_days_left.frame = CGRectMake(50, 10, 100, 99);
Run Code Online (Sandbox Code Playgroud)
编辑:
- (void) alignDaysLeft{
//code to align the label just after the match date
CGFloat dateLabelWidth = [label_date.text sizeWithFont:label_date.font].width;
CGFloat dateLabelHeight = [label_date.text sizeWithFont:label_date.font].height;
CGFloat someGap = 0;
CGFloat daysLeftX = label_date.frame.origin.x + dateLabelWidth + someGap;
CGFloat daysLeftY = label_date.frame.origin.y;
[label_date sizeToFit];
//label_days_left.frame = CGRectMake(daysLeftX, daysLeftY, 100, dateLabelHeight);
label_days_left.frame = CGRectMake(50, 10, 100, 99);
label_days_left.text = [NSString stringWithFormat:@"lolo"];
NSLog(@"date width - %f", daysLeftX);
}
Run Code Online (Sandbox Code Playgroud)
label_date是包含月份和日期的变量.label_days_left是我试图在月份旁边放置的标签变量.
编辑2: …
在更新了我的iOS 7代码之后,我遇到了一个让我感到困惑的问题.这段代码在iOS 6中运行良好:
-(void)showPDFFile
{
NSString* fileName = @"Report.PDF";
NSArray *arrayPaths =
NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory,
NSUserDomainMask,
YES);
NSString *path = [arrayPaths objectAtIndex:0];
NSString* pdfFileName = [path stringByAppendingPathComponent:fileName];
CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
// This has been set to accomadate iPhone 5 screen size. //
if (iOSDeviceScreenSize.height == 568) {
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 455)];
}
else{
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)];
}
NSURL *url = [NSURL fileURLWithPath:pdfFileName];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView setScalesPageToFit:YES]; …Run Code Online (Sandbox Code Playgroud) 我想UITableView从CGRectMake函数启动一个实例,但是当我尝试使用常量启动它而不是直接指定一个新的Int,例如:
UITableView(frame: CGRectMake(20, HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120, tableWidth, tableHeight)
Run Code Online (Sandbox Code Playgroud)
,然后我收到一个错误:Int is not convertible to CGFloat.
所以我将其更改为以下代码:
UITableView(frame: CGRectMake(20, (HEIGHT_OF_STATUS_AND_NAVIGATION_BAR + 120) as CGFloat, tableWidth as CGFloat, tableHeight as CGFloat)) // `tableWidth` and `tableHeight` are both of type `Int`.
Run Code Online (Sandbox Code Playgroud)
,然后我收到一个错误:Cannot invoke + with an argument of type CGRect.
当然,我可以通过分配来启动它Int,例如CGRectMake(20 + 300 + 12, 44 + 120, 300, 480).但我想使用常量和变量.
那么错误是什么意思呢?我该如何解决?
我使用Xcode 6 beta 6.