我想要一张图片移到底部.如果按下按钮,图片应向下移动1.
我添加了图片和一个按钮:
var corX = 0
var corY = 0
var runter: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
var image = UIImage(named: "panzerBlau.jpg");
var panzer = UIImageView(frame: CGRectMake(corX, corY, 30, 40)); //
override func viewDidLoad() {
super.viewDidLoad()
panzer.image = image; //
self.view.addSubview(panzer); //
runter.frame = CGRectMake(100, 30, 10 , 10)
runter.backgroundColor = UIColor.redColor()
view.addSubview(runter)
runter.addTarget(self, action: "fahren", forControlEvents:UIControlEvents.TouchUpInside)
}
Run Code Online (Sandbox Code Playgroud)
至少我在函数"fahren"中说过将图片向下移动1.
func fahren(){
corY += 1
panzer.frame = CGRectMake(corX, corY, 30, 40) //
self.view.addSubview(panzer);
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我用这些corX和corY的东西得到了几个错误.如果没有它们,它可以完美地工作,但不像是一次性按钮.错误是:ViewController.Type没有名为corX的成员,ViewController.Type没有成员名称panzer我在哪里得到错误//显示哪些行.
PS:我使用Xcode Beta5
这是完整的代码,没有别的东西:
import UIKit
class …Run Code Online (Sandbox Code Playgroud) 现在已经在Swift 3.0中删除了CGRectMake,CGPointMake,CGSizeMake等,有没有办法自动更新所有初始化,如CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h).手动过程是非常痛苦的.
当我将代码转换为Current Swift语法时,不确定为什么Apple不会自动转换它...
我需要为UIImageView不同的集合创建一个框架,CGSize并且CGPoint两个值将始终根据用户的选择而不同.那么如何制作CGRect表格a CGPoint和a CGSize?先感谢您.
这个问题最初是针对objective-c编程语言提出的.在撰写本文时,swift甚至还没有存在.
是否有可能只更改一个属性CGRect?
例如:
self.frame.size.width = 50;
Run Code Online (Sandbox Code Playgroud)
代替
self.frame = CGRectMake(self.frame.origin.x,
self.frame.origin.y,
self.frame.size.width,
50);
Run Code Online (Sandbox Code Playgroud)
当然我明白这self.frame.size.width是只读的所以我想知道如何做到这一点?
CSS ANALOGY 风险自负
对于那些熟悉的人来说CSS,这个想法非常类似于使用:
margin-left: 2px;
Run Code Online (Sandbox Code Playgroud)
而不是必须改变整个价值:
margin: 5px 5px 5px 2px;
Run Code Online (Sandbox Code Playgroud) 两者似乎在Swift中都是一样的.我们应该使用哪个?
CGRectZero VS CGRect.zeroRectGRectMake(1, 1, 1, 1)vs CGRect(x: 1, y: 1, width: 1, height: 1)
UIEdgeInsetsMake(1, 1, 1, 1)vsUIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)我在动画中有这个代码:
image.frame = CGRectMake(x: x, y: y, width, height)
Run Code Online (Sandbox Code Playgroud)
我需要获取图像的x和y坐标.我发现了这个Objective-C代码:
CGPoint origin = imageView.frame.origin;
Run Code Online (Sandbox Code Playgroud)
一旦找到图像的x和y位置,我将需要对其进行转换.我将使用类似的东西:
image.frame = CGRectMake(x-50, y-50, width+500, height+500)
Run Code Online (Sandbox Code Playgroud)
...这样我就可以在屏幕上移动图像了.如何找到原始的x和y位置?
我试图检查a CGRect是否null在我的属性getter中,如果是,默认情况下加载一个值,但是,在我的init方法中,当我使用该属性时,它为所有值返回零.
这是我的吸气鬼:
- (CGRect)frame
{
if(CGRectIsNull(_frame))
_frame = CGRectMake(0,0,60,60);
return _frame;
}
- (id)init
{
self = [super initWithFrame:self.frame];
if(self)
{
//do something
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么,在哪里看.任何帮助深表感谢.
我有一个UITableView,在200个部分中有大约400个单元格,并且在响应用户交互(滚动,选择单元格)时有点迟钝.我已经确保检索单元格和标题视图的方法在运行时最小化,并且我不认为我做任何与众不同的事情让它变慢.单元格和标题只有一个背景图像和文本.有没有其他人有这样的问题,你知道有什么办法让它运行得更快一点吗?
编辑:我正在提供赏金,因为我很想得到一些有用的反馈.我不认为答案在于我的代码中的问题.相反,我正在寻找重新设计UITableView的策略,以便它运行得更快.我完全愿意添加新代码,我期待听到你们要说的话.
在模拟器和我的设备(iPhone 4)上都观察到了低迷.这是我的实现viewForHeaderInSection和cellForRowAtIndexPath,这是唯一UITableViewDelegate实现非常重要的方法.我正在重用单元格和标题视图.
- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section
{
HaikuHeaderView* view= [m_sectionViews objectAtIndex:section];
NSMutableArray* array= [m_haikuSearch objectAtIndex:section];
Haiku* haiku= [array objectAtIndex:0];
[view.poetLabel setText:[haiku nameForDisplay]];
return view;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
cell.backgroundView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell gradient2.png"]];
// (Set up a bunch of label attributes …Run Code Online (Sandbox Code Playgroud) 我已经看到了使用这个替代方法CGRectMake()来初始化CGRect变量:
CGRect frame =(CGRect){0,0,10,10};
我的问题是,CGRect frame = (CGRect){0,0,10,10};工作怎么样?幕后发生了什么?它看起来像一个c风格的数组正在初始化({x,y,w,h})然后被转换为CGRect结构 - 这是正确的吗?如果是这样,如何将ac样式数组转换为结构?
NB我不是在问上面的替代方案是否合适CGRectMake(),我只是想了解它为什么/如何工作.
我正在尝试在键盘显示时调整UITextView的大小.在iPhone上它工作得很漂亮.当系统调度键盘通知时,文本视图会调整大小.当它完成编辑后,我调整它以填充初始空间.(是的,我假设编辑停止时键盘已经消失.我应该改变它.但是,我认为这不是我的问题.)
当我在iPad上调整textview的大小时,框架会正确调整大小,但应用程序似乎会将框架的Y值重置为零.这是我的代码:
- (void) keyboardDidShowWithNotification:(NSNotification *)aNotification{
//
// If the content view being edited
// then show shrink it to fit above the keyboard.
//
if ([self.contentTextView isFirstResponder]) {
//
// Grab the keyboard size "meta data"
//
NSDictionary *info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
//
// Calculate the amount of the view that the keyboard hides.
//
// Here we do some confusing math voodoo.
//
// Get the bottom of the screen, subtract that …Run Code Online (Sandbox Code Playgroud) cgrectmake ×10
ios ×7
cgrect ×4
objective-c ×4
swift ×4
frame ×2
struct ×2
c ×1
cgpoint ×1
ios6 ×1
null ×1
swift3 ×1
uitableview ×1
uitextview ×1
xcode ×1