Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Kallikrates
Jul 7, 2002
Pro Lurker
code:
class BusStopsTableViewController : UITableViewController {
}
Signifies a swift object BusStopsTableViewController that is subclass of UITableViewController which is already defined to implement the tableviewDatasource which is why overrides are required.

Adbot
ADBOT LOVES YOU

ManicJason
Oct 27, 2003

He doesn't really stop the puck, but he scares the hell out of the other team.

Doh004 posted:

I was under the impression that dequeueReusableCellWithIdentifier:forIndexPath: no longer returned nil, and the checking for nil was just old, leftover practices?
I thought the method with forIndexPath throws an exception if there is no table cell type registered, but the old dequeue method without specifying an index path returns nil if no cell type is registered.

Doctor w-rw-rw-
Jun 24, 2008

ManicJason posted:

I thought the method with forIndexPath throws an exception if there is no table cell type registered, but the old dequeue method without specifying an index path returns nil if no cell type is registered.

Objective-C code:
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
    [tableView registerClass:[UITableViewCell class]
      forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];

    // ...

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
    return cell;

Doc Block
Apr 15, 2003
Fun Shoe
It's not "hard" in the sense that it's no more difficult than creating any other custom view, but in my apps the standard table view cell styles have been perfectly adequate.

Which brings me back to my question: if we aren't supposed to use the old methods that might return nil (the ones that don't require the use of a custom cell that you've already registered), how are we supposed to specify which of the built-in cell styles we want?

ManicJason
Oct 27, 2003

He doesn't really stop the puck, but he scares the hell out of the other team.
I was pointing out that it still makes sense, depending on the method used. It's not like putting code into a viewDidUnload, something that is actually just a waste of lines.

Doh004
Apr 22, 2007

Mmmmm Donuts...

Doc Block posted:

It's not "hard" in the sense that it's no more difficult than creating any other custom view, but in my apps the standard table view cell styles have been perfectly adequate.

Which brings me back to my question: if we aren't supposed to use the old methods that might return nil (the ones that don't require the use of a custom cell that you've already registered), how are we supposed to specify which of the built-in cell styles we want?

Subclass the UITableViewCell and in initWithStyle just pass in the style you want.

brap
Aug 23, 2004

Grimey Drawer
Alright, I just created my first workspace and added a third party library in addition to my own project. Now whenever I run the unit test in my own project, it fails to build and the issue navigator shows no issues. If I just use cmnd+B to build it builds, but clicking the play button next to my test method fails to build. What's that about?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
Check the build log, and also fuxcode.

brap
Aug 23, 2004

Grimey Drawer
I honestly can't figure what it was about. I have done the sloppy solution and included the 3rd party library directly into my project. Now I'm not seeing the issue any more. That probably needs to be redone properly so it lives in the project it originally came in. I went looking for the build log and I'm not really sure I opened it properly. Googling for it doesn't give a straightforward answer on how to even open it.

I have another thing going on. I'm trying to pass data between two table view controllers, each one embedded in a navigation controller. I have a selection segue happening so touching an item in my first table view opens the second one. However, the destination view controller is my navigation view controller! I solved it with this code in the first view controller that I'm pretty sure is bad:

code:
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var destination = segue.destinationViewController as UINavigationController
        var actualDestination = destination.childViewControllers.last as StopsTableViewController
        if let value = routes {
            if let index = self.tableView.indexPathForSelectedRow() {
                actualDestination.stops = value[index.row].path
            }
        }
    }
What's the right way to access this table view controller known as actualDestination?

dizzywhip
Dec 23, 2005

How do you guys share code between projects? I've set up a separate repo with its own project that builds a shared framework, and I include that repo in my project using git subtree and Xcode workspaces. I'm not really sold on git subtree though -- either it's pretty buggy or I'm doing something stupid because I keep running into weird issues with conflicts and unmerged changes when there shouldn't be any, and I've had to totally trash and re-add the subtree a couple times now. I can't think of any good alternatives, though.

lord funk
Feb 16, 2004

Has something changed with CGAffineTransform in iOS 8? Things are jumping / snapping around in ways I totally wasn't expecting when I got up this morning.

Like this:
code:
self.imageView.transform = CGAffineTransformMakeScale(0.5, 0.5)
...later animating this:
code:
UIView.animateWithDuration(1.0) {
    self.imageView.transform = CGAffineTransformTranslate(100, 0)
}
...causes the view to leap instantly to the right before finishing its translation.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
There are some changes to default UIView animations. I don't think that's what you're running in to but I thought I'd mention it anyway. Session 236 has the details.

Kallikrates
Jul 7, 2002
Pro Lurker
If a view already has a non-identity transform I thought the way to apply an additional transform was to construct one with
code:
CGAffineTransformTranslate(self.imageView.transform, 100, 0)

pliable
Sep 26, 2003

this is what u get for "180 x 180 avatars"

this is what u fucking get u bithc
Fun Shoe
So apparently, the system calls section of the man pages on my Mac have decided to vanish:

code:
16:59[pliable@Steves-MacBook-Pro]~/dev$ ll /usr/share/man/
total 296
drwxr-xr-x  1630 root  wheel   55420 Sep 26 21:02 man1/
drwxr-xr-x     3 root  wheel     102 Oct 22  2013 man3/
drwxr-xr-x    39 root  wheel    1326 Oct 22  2013 man4/
drwxr-xr-x   199 root  wheel    6766 Sep 26 21:02 man5/
drwxr-xr-x     3 root  wheel     102 Aug 24  2013 man6/
drwxr-xr-x    51 root  wheel    1734 Sep 26 21:02 man7/
drwxr-xr-x   481 root  wheel   16354 Sep 26 21:02 man8/
drwxr-xr-x    23 root  wheel     782 Sep 19  2013 man9/
drwxr-xr-x   680 root  wheel   23120 Oct 22  2013 mann/
-rw-r--r--     1 root  wheel  149221 Sep 26 19:55 whatis
I'm very confused, especially since every other section is there. Anyone know how the gently caress I can install the system call section back? Thanks!

Mikey-San
Nov 3, 2005

I'm Edith Head!
Eschaton might know a simple way to reinstall those pages, but if you have a Time Machine backup, you could do a quick restore of that stuff:

code:
sudo tmutil restore <snapshot_path>/<that_disk>/usr/share/man/man2 /usr/share/man/man2

pliable
Sep 26, 2003

this is what u get for "180 x 180 avatars"

this is what u fucking get u bithc
Fun Shoe

Mikey-San posted:

Eschaton might know a simple way to reinstall those pages, but if you have a Time Machine backup, you could do a quick restore of that stuff:

code:
sudo tmutil restore <snapshot_path>/<that_disk>/usr/share/man/man2 /usr/share/man/man2

Ah that's a good idea...though I haven't done a Time Machine back up in nearly 2 years, haha. My Mac isn't really my primary system anymore.

And, who/what is Eschaton? Google points me to some blog or something?

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?

pliable posted:

Ah that's a good idea...though I haven't done a Time Machine back up in nearly 2 years, haha. My Mac isn't really my primary system anymore.

And, who/what is Eschaton? Google points me to some blog or something?

Eschaton is another goon, hi.

I think those man pages are installed as part of the command-line tools, install the latest Xcode command line tools package and you might get them back.

pliable
Sep 26, 2003

this is what u get for "180 x 180 avatars"

this is what u fucking get u bithc
Fun Shoe

eschaton posted:

Eschaton is another goon, hi.

I think those man pages are installed as part of the command-line tools, install the latest Xcode command line tools package and you might get them back.

Hi there :)

And yep, that worked perfectly! Thank you much!

I'm still absolutely baffled as to how just that section of the man pages were erased but, eh...

Walked
Apr 14, 2003

So I'm trying to get a grasp on pointers in Objective-C and I'm just getting entirely thrown off by passing an NSString as an argument.

code:
@implementation Test
-(void) testMessage(NSString*) s
{
	NSLog(@"%@", s);


}
Why does this work? I would think that since s is an argument that's an NSString* it would need to be dereferenced to get a value out of it? No?
I know this is a really dumb question but I've not dealt with pointers and all my background is in C#/python, so I'm actually trying to understand whats happening here.

I've come across a ton of tutorials that basically cover this secnario:
code:
int *ptr;
int val = 1;
ptr = &val;
 
// print out dereferenced values
printf("dereference *ptr = %d\n", *ptr);
printf("dereference address of val *(&val) = %d\n", *(&val));
But that doesnt cover passing the (NSString *) and why I can simply reference s rather than *s in this case.

Not sure if that makes sense and I may need to take a break, reset, and re-read, but maybe something rather simple if off in my understanding here.

lord funk
Feb 16, 2004

pokeyman posted:

There are some changes to default UIView animations. I don't think that's what you're running in to but I thought I'd mention it anyway. Session 236 has the details.

Will watch, thanks.

Kallikrates posted:

If a view already has a non-identity transform I thought the way to apply an additional transform was to construct one with
code:
CGAffineTransformTranslate(self.imageView.transform, 100, 0)

Yes, sorry it was a typo. Should have read:
code:
self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, 100, 0)

lord funk
Feb 16, 2004

Full code:
code:
UIView.animateWithDuration(1.0, animations: {
    self.aView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI) / 4.0)
})
...then:
code:
UIView.animateWithDuration(1.0, animations: {
    self.aView.transform = CGAffineTransformTranslate(self.aView.transform, 100, 0)
})

dupersaurus
Aug 1, 2012

Futurism was an art movement where dudes were all 'CARS ARE COOL AND THE PAST IS FOR CHUMPS. LET'S DRAW SOME CARS.'

Walked posted:

So I'm trying to get a grasp on pointers in Objective-C and I'm just getting entirely thrown off by passing an NSString as an argument.

code:
@implementation Test
-(void) testMessage(NSString*) s
{
	NSLog(@"%@", s);


}
Why does this work? I would think that since s is an argument that's an NSString* it would need to be dereferenced to get a value out of it? No?
I know this is a really dumb question but I've not dealt with pointers and all my background is in C#/python, so I'm actually trying to understand whats happening here.

I've come across a ton of tutorials that basically cover this secnario:
code:
int *ptr;
int val = 1;
ptr = &val;
 
// print out dereferenced values
printf("dereference *ptr = %d\n", *ptr);
printf("dereference address of val *(&val) = %d\n", *(&val));
But that doesnt cover passing the (NSString *) and why I can simply reference s rather than *s in this case.

Not sure if that makes sense and I may need to take a break, reset, and re-read, but maybe something rather simple if off in my understanding here.

Someone else can surely give the formal explanation, but when it comes to obj-c pointers, I think the dereferencing is implied. If you're using a C/C++ object then you'll have to do the normal dereferencing (I think), as that example shows. The obj-c [s someNSStringMethod] is functionally the same as the C++ s->someStringMethod()

Doh004
Apr 22, 2007

Mmmmm Donuts...

Walked posted:

So I'm trying to get a grasp on pointers in Objective-C and I'm just getting entirely thrown off by passing an NSString as an argument.

code:
@implementation Test
-(void) testMessage(NSString*) s
{
	NSLog(@"%@", s);


}
Why does this work? I would think that since s is an argument that's an NSString* it would need to be dereferenced to get a value out of it? No?
I know this is a really dumb question but I've not dealt with pointers and all my background is in C#/python, so I'm actually trying to understand whats happening here.

I've come across a ton of tutorials that basically cover this secnario:
code:
int *ptr;
int val = 1;
ptr = &val;
 
// print out dereferenced values
printf("dereference *ptr = %d\n", *ptr);
printf("dereference address of val *(&val) = %d\n", *(&val));
But that doesnt cover passing the (NSString *) and why I can simply reference s rather than *s in this case.

Not sure if that makes sense and I may need to take a break, reset, and re-read, but maybe something rather simple if off in my understanding here.

Not sure if it's a typo, but you're missing the : in your method.
code:
@implementation Test
- (void)testMessage:(NSString*)s
{
	NSLog(@"%@", s);
}

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Walked posted:

So I'm trying to get a grasp on pointers in Objective-C and I'm just getting entirely thrown off by passing an NSString as an argument.

code:

@implementation Test
-(void) testMessage(NSString*) s
{
	NSLog(@"%@", s);


}

Why does this work? I would think that since s is an argument that's an NSString* it would need to be dereferenced to get a value out of it? No?
I know this is a really dumb question but I've not dealt with pointers and all my background is in C#/python, so I'm actually trying to understand whats happening here.

I've come across a ton of tutorials that basically cover this secnario:
code:

int *ptr;
int val = 1;
ptr = &val;
 
// print out dereferenced values
printf("dereference *ptr = %d\n", *ptr);
printf("dereference address of val *(&val) = %d\n", *(&val));

But that doesnt cover passing the (NSString *) and why I can simply reference s rather than *s in this case.

Not sure if that makes sense and I may need to take a break, reset, and re-read, but maybe something rather simple if off in my understanding here.

How does this work
C code:

const char *s = "I am a C string";
printf("pointer %p points to %s", s, s);
? I can simply reference s rather than *s.

Walked
Apr 14, 2003

pokeyman posted:

How does this work
C code:
const char *s = "I am a C string";
printf("pointer %p points to %s", s, s);
? I can simply reference s rather than *s.

This is really helpful. I assume that the %@ in the NSLog is the same principle? Still wrapping my head around it but that example is exceedingly helpful.

edit: And yes that was a typo to leave out the colon; transcription error between two computers

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Walked posted:

This is really helpful. I assume that the %@ in the NSLog is the same principle? Still wrapping my head around it but that example is exceedingly helpful.

edit: And yes that was a typo to leave out the colon; transcription error between two computers

Try implementing
Objective-C code:

// replaces the first %@ in format with obj then prints the result in the same way NSLog does
void my_NSLog(NSString *format, NSObject *obj) {
    // TODO
}

lord funk
Feb 16, 2004

pokeyman posted:

There are some changes to default UIView animations. I don't think that's what you're running in to but I thought I'd mention it anyway. Session 236 has the details.

I'm pretty sure after watching this that animations being 'additive' by default in iOS 8 is the culprit. But I don't see a way to disable that when I want to use UIView.animateWithDuration. It looks like you're forced to use it unless you make your animations with something like CABasicAnimation?

Doc Block
Apr 15, 2003
Fun Shoe

Walked posted:

So I'm trying to get a grasp on pointers in Objective-C and I'm just getting entirely thrown off by passing an NSString as an argument.

code:
@implementation Test
-(void) testMessage(NSString*) s
{
	NSLog(@"%@", s);


}
Why does this work? I would think that since s is an argument that's an NSString* it would need to be dereferenced to get a value out of it? No?
I know this is a really dumb question but I've not dealt with pointers and all my background is in C#/python, so I'm actually trying to understand whats happening here.

Because the NSLog() call is taking a pointer to an NSString, not the NSString object itself, so you're just passing it the pointer that was passed in to your method. %@ means it wants a pointer to an Objective-C object, which it then calls -description on, and then prints what gets returned. And since NSString's -description method just returns the string, it prints the string.

In Objective-C, you never access the objects directly, you just pass around pointers to them. So you never need to dereference a pointer to an Objective-C object.

quote:

I've come across a ton of tutorials that basically cover this secnario:
code:
int *ptr;
int val = 1;
ptr = &val;
 
// print out dereferenced values
printf("dereference *ptr = %d\n", *ptr);
printf("dereference address of val *(&val) = %d\n", *(&val));
But that doesnt cover passing the (NSString *) and why I can simply reference s rather than *s in this case.

Not sure if that makes sense and I may need to take a break, reset, and re-read, but maybe something rather simple if off in my understanding here.

In C/C++/Objective-C, a pointer is just a variable, and the value of the variable is understood to be a memory address. In Objective-C, since objects can only be allocated on the heap, you will only reference Objective-C objects via pointers. Because of this, people tend to refer to a pointer to an Objective-C object as the object itself, but it isn't.

You only dereference a pointer when you want to access the thing at the memory address that the pointer points to.
code:
int *ptr;
int val = 1;
ptr = &val;    // we assign the memory address of val as the pointer's value

/* the %d tells printf() to interpret that argument as a decimal integer value, not a pointer to an int,
    so we have to dereference the pointer so that the value pointed to gets passed instead of the pointer itself */
printf("dereference *ptr = %d\n", *ptr);

/* this is pretty convoluted. the %d tells printf() its argument is a decimal integer, yet you're passing the
    address of val casted to a pointer */
printf("address of val = *(&val) = %d\n", *(&val));
printf("address of val = %p\n", &val);      // This is a better way to do it. The %p tells it it's getting a pointer,
                                                              // so we give it the address of val
In C/C++/Objective-C, function and method parameters are ONLY passed by value. When you pass a pointer, you're actually just passing the pointer's value, and the compiler knows to interpret this value as a memory address. So if you have a function that gets passed a pointer to an int, and inside the function you want to access the int itself, you dereference the pointer. Or, if you have a function that takes a pointer to an int, you can just pass the address of an int you've already got.

But, again, for Objective-C objects, you never dereference pointers to them. All you do is pass around pointers to them, since every method or function that takes an Objective-C object is actually just taking a pointer to the object.

Doc Block fucked around with this message at 21:48 on Sep 30, 2014

Walked
Apr 14, 2003

Thank you guys. That pretty much got me sorted out; playing with some code to get it nailed down but I think I'm good to go with this. Thank you again.

Toady
Jan 12, 2009

I don't remember--were Mavericks GM seeds upgradeable to the final release? Not that it's a guarantee for Yosemite, though I know it's been promised for the public beta.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
Installing the second GM seed (which became the final release) on top of the first GM seed was tricky, but upgrading GM1 -> 10.9.1 worked fine.

Doc Block
Apr 15, 2003
Fun Shoe
Just wanna say that PaintCode is awesome. No more having to create a bunch of variations of the same toolbar icons and such. Gonna have to see about finding the best way to make it work with different image sizes due to different size classes and whatnot, but still.

It's a vector drawing app, except it can export your drawings as Core Graphics draw calls in Objective-C, Swift, and C#, both for iOS and OS X.

Doctor w-rw-rw-
Jun 24, 2008

Doc Block posted:

Just wanna say that PaintCode is awesome. No more having to create a bunch of variations of the same toolbar icons and such. Gonna have to see about finding the best way to make it work with different image sizes due to different size classes and whatnot, but still.

It's a vector drawing app, except it can export your drawings as Core Graphics draw calls in Objective-C, Swift, and C#, both for iOS and OS X.

You can set the matrix such that you can scale the coordinates to whatever size you wish. I did this (also tried PaintCode, it's pretty okay, but I preferred to rewrite it a little). I'll pull the code up later tonight - remind me via PM?

Excerpt:
Objective-C code:
+ (UIImage *)foobarIconWithSize:(CGSize)size
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);

    // Scale to 80x80 coordinate space
    CGContextScaleCTM(UIGraphicsGetCurrentContext(), size.width / 80.0, size.height / 80.0);

    // all that drawing jazz

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
Come to think of it, you probably want to change that CGContextScaleCTM to account for screen scale. You can also run this on a background thread, btw, because UIImage is (as far as I know) threadsafe since it doesn't deal with views or have state.

Doctor w-rw-rw- fucked around with this message at 06:11 on Oct 1, 2014

Doc Block
Apr 15, 2003
Fun Shoe
I'm sure I'll figure it out, thanks though.

PaintCode certainly isn't perfect, but good lord I am not going to miss having to create @1x @2x and now @3x images, and having to create them for different size classes.

Doctor w-rw-rw-
Jun 24, 2008
Oh yeah, when I say rewrite, I mean extracting things into constants, and using core graphics calls instead of UIBezierCurve. But that's just because I'm a neckbeard and like C APIs. Also, see above edit.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Doctor w-rw-rw- posted:

You can set the matrix such that you can scale the coordinates to whatever size you wish. I did this (also tried PaintCode, it's pretty okay, but I preferred to rewrite it a little). I'll pull the code up later tonight - remind me via PM?

Excerpt:
Objective-C code:
+ (UIImage *)foobarIconWithSize:(CGSize)size
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);

    // Scale to 80x80 coordinate space
    CGContextScaleCTM(UIGraphicsGetCurrentContext(), size.width / 80.0, size.height / 80.0);

    // all that drawing jazz

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
Come to think of it, you probably want to change that CGContextScaleCTM to account for screen scale. You can also run this on a background thread, btw, because UIImage is (as far as I know) threadsafe since it doesn't deal with views or have state.

I think screen scale is handled by the third parameter of UIGraphicsBeginImageContextWithOptions isn't it? Assuming main screen.

Also you win a prize

UIKit Function Reference posted:

UIGraphicsGetImageFromCurrentImageContext

This function may be called from any thread of your app.

edit: CocoaPods is so frustrating. Presumably for the people who work on it too.

pokeyman fucked around with this message at 06:29 on Oct 1, 2014

Doctor w-rw-rw-
Jun 24, 2008

pokeyman posted:

I think screen scale is handled by the third parameter of UIGraphicsBeginImageContextWithOptions isn't it? Assuming main screen.
:doh: I fixed it to account for that then forgot I fixed it.

pokeyman posted:

edit: CocoaPods is so frustrating. Presumably for the people who work on it too.
Agreed. My coworker is one of the CocoaPods devs. What about it is frustrating? I can pass it on.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Doctor w-rw-rw- posted:

Agreed. My coworker is one of the CocoaPods devs. What about it is frustrating? I can pass it on.

The implementation of it is crazy-making. I actually jumped in on development back in the day (lol), then thought about the whole thing and concluded "this makes no sense". Took me a couple years until the next time I (grudgingly) tried it out again.

Now it's a huge pain trying to use it alongside Swift. I know they're working on it, but the implementation means that's a bigger project than it could've been.

I long for a pseudo-fork of CocoaPods that does away with workspaces and static libraries and instead just downloads some code and wires it into your target(s).

edit: Just remembered: this thread was what spurred me to these conclusions. Good ol' schwa.

Doc Block
Apr 15, 2003
Fun Shoe

Doctor w-rw-rw- posted:

Oh yeah, when I say rewrite, I mean extracting things into constants, and using core graphics calls instead of UIBezierCurve. But that's just because I'm a neckbeard and like C APIs. Also, see above edit.

I don't know how long it's been since you used PaintCode, but now they have this thing they introduced in PaintCode 2 called StyleKit, where you can have drawing colors and such be split off so that you can change them for all your images at once. So it's like having that stuff broken out into constants, but also works in the PaintCode UI. (I'm not a big fan of modifying generated code).

Adbot
ADBOT LOVES YOU

Doctor w-rw-rw-
Jun 24, 2008

Doc Block posted:

I don't know how long it's been since you used PaintCode, but now they have this thing they introduced in PaintCode 2 called StyleKit, where you can have drawing colors and such be split off so that you can change them for all your images at once. So it's like having that stuff broken out into constants, but also works in the PaintCode UI. (I'm not a big fan of modifying generated code).
PaintCode 1 - got it in a bundle. Using UIColor categories so "[UIColor companyPrefixColorName]" autocompletes is pretty convenient, and the hard part is the numbers, anyhow. Once they're in a nice coordinate space, hand-tweaking to get the details right is easier done directly IMO. It *is* pretty much a one-way conversion, but for graphics that change often, you may as well just slap a PNG on a server.

pokeyman posted:

I long for a pseudo-fork of CocoaPods that does away with workspaces and static libraries and instead just downloads some code and wires it into your target(s).
Sounds like the pretty standard complaints (which I share). Personally, I think that CocoaPods' approach to compilation is not the best and IMO iOS framework support makes me want to write a new build system that resembles maven's versioning/artifact system, but with a way simpler compile/configuration system (Xcode appears to support external build systems). Do you or others have the bandwidth to spare?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply