├── .gitattributes ├── .gitignore ├── LICENSE ├── OHStackView.h ├── OHStackView.m ├── README └── StackView Example ├── Classes ├── AppDelegate.h └── AppDelegate.m ├── MainWindow.xib ├── StackView Example.xcodeproj └── project.pbxproj ├── StackView_Example-Info.plist ├── StackView_Example_Prefix.pch └── main.m /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -crlf -diff -merge 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/ 3 | *~.nib/ 4 | *.pbxuser 5 | *.perspective 6 | *.perspectivev3 7 | *.mode1v3 8 | *.mode2v3 9 | 10 | # old school 11 | .svn 12 | 13 | # osx noise 14 | .DS_Store 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Without any further information, all the sources provided here are under the MIT License 2 | quoted below. 3 | 4 | Anyway, please contact me by email (olivier.halligon+ae@gmail.com) if you plan to use my work and the provided classes 5 | in your own software. Thanks. 6 | 7 | 8 | /*********************************************************************************** 9 | * 10 | * Copyright (c) 2010 Olivier Halligon 11 | * 12 | * Permission is hereby granted, free of charge, to any person obtaining a copy 13 | * of this software and associated documentation files (the "Software"), to deal 14 | * in the Software without restriction, including without limitation the rights 15 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 | * copies of the Software, and to permit persons to whom the Software is 17 | * furnished to do so, subject to the following conditions: 18 | * 19 | * The above copyright notice and this permission notice shall be included in 20 | * all copies or substantial portions of the Software. 21 | * 22 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 | * THE SOFTWARE. 29 | * 30 | *********************************************************************************** 31 | * 32 | * Any comment or suggestion welcome. Referencing this project in your AboutBox is appreciated. 33 | * Please tell me if you use this class so we can cross-reference our projects. 34 | * 35 | ***********************************************************************************/ 36 | -------------------------------------------------------------------------------- /OHStackView.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************************** 2 | * 3 | * Copyright (c) 2010 Olivier Halligon 4 | * 5 | * Permission is hereby granted, free of charge, to any person obtaining a copy 6 | * of this software and associated documentation files (the "Software"), to deal 7 | * in the Software without restriction, including without limitation the rights 8 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | * copies of the Software, and to permit persons to whom the Software is 10 | * furnished to do so, subject to the following conditions: 11 | * 12 | * The above copyright notice and this permission notice shall be included in 13 | * all copies or substantial portions of the Software. 14 | * 15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | * THE SOFTWARE. 22 | * 23 | *********************************************************************************** 24 | * 25 | * Any comment or suggestion welcome. Referencing this project in your AboutBox is appreciated. 26 | * Please tell me if you use this class so we can cross-reference our projects. 27 | * 28 | ***********************************************************************************/ 29 | 30 | #import 31 | 32 | typedef enum { 33 | OHStackAlignmentNone = 0, // Don't align 34 | 35 | OHStackAlignmentStackFirstEdges, // Stack views on top (vertical) / left (horizontal) 36 | OHStackAlignmentStackLastEdges, // Stack edges on bottom (vertical) / right (horizontal) 37 | 38 | OHStackAlignmentAlignFirstEdges, // Align top (vertical) / left (horizontal) edges 39 | OHStackAlignmentAlignCenters, // Align centers 40 | OHStackAlignmentAlignLastEdges, // Align bottom (vertical) / right (horizontal) edges 41 | 42 | 43 | // more understandable aliases for vertical modes 44 | OHStackAlignmentStackFromTop = OHStackAlignmentStackFirstEdges, 45 | OHStackAlignmentStackFromBottom = OHStackAlignmentStackLastEdges, 46 | OHStackAlignmentAlignTopEdges = OHStackAlignmentAlignFirstEdges, 47 | OHStackAlignmentAlignBottomEdges = OHStackAlignmentAlignLastEdges, 48 | 49 | // more understandable aliases for horizontal modes 50 | OHStackAlignmentStackFromLeft = OHStackAlignmentStackFirstEdges, 51 | OHStackAlignmentStackFromRight = OHStackAlignmentStackLastEdges, 52 | OHStackAlignmentAlignLeftEdges = OHStackAlignmentAlignFirstEdges, 53 | OHStackAlignmentAlignRightEdges = OHStackAlignmentAlignLastEdges, 54 | } OHStackAlignment; 55 | 56 | 57 | ///////////////////////////////////////////////////////////////////////////// 58 | // MARK: - 59 | ///////////////////////////////////////////////////////////////////////////// 60 | 61 | @interface OHStackView : UIView { 62 | OHStackAlignment horizontalAlignment; 63 | OHStackAlignment verticalAlignment; 64 | CGSize margins; 65 | CGSize spacing; 66 | } 67 | @property(nonatomic,assign) OHStackAlignment horizontalAlignment; 68 | @property(nonatomic,assign) OHStackAlignment verticalAlignment; 69 | @property(nonatomic,assign) CGSize spacing; 70 | @property(nonatomic,assign) CGSize margins; 71 | @end 72 | -------------------------------------------------------------------------------- /OHStackView.m: -------------------------------------------------------------------------------- 1 | // 2 | // StackView.m 3 | // 4 | // Created by Olivier on 20/11/09. 5 | // Copyright 2009 AliSoftware. All rights reserved. 6 | // 7 | 8 | #import "OHStackView.h" 9 | 10 | @interface OHStackView() 11 | -(CGSize)computeForSize:(CGSize)size apply:(BOOL)apply; 12 | @end 13 | 14 | ///////////////////////////////////////////////////////////////////////////// 15 | 16 | @implementation OHStackView 17 | @synthesize horizontalAlignment; 18 | @synthesize verticalAlignment; 19 | @synthesize spacing; 20 | @synthesize margins; 21 | 22 | 23 | ///////////////////////////////////////////////////////////////////////////// 24 | // MARK: - 25 | // MARK: Setters 26 | ///////////////////////////////////////////////////////////////////////////// 27 | 28 | -(void)setHorizontalAlignment:(OHStackAlignment)v 29 | { 30 | horizontalAlignment = v; 31 | [self setNeedsLayout]; 32 | } 33 | -(void)setVerticalAlignment:(OHStackAlignment)v 34 | { 35 | verticalAlignment = v; 36 | [self setNeedsLayout]; 37 | } 38 | -(void)setSpacing:(CGSize)v 39 | { 40 | spacing = v; 41 | [self setNeedsLayout]; 42 | } 43 | -(void)setMargins:(CGSize)v 44 | { 45 | margins = v; 46 | [self setNeedsLayout]; 47 | } 48 | 49 | ///////////////////////////////////////////////////////////////////////////// 50 | // MARK: - 51 | // MARK: Overriden methods 52 | ///////////////////////////////////////////////////////////////////////////// 53 | 54 | -(void)layoutSubviews 55 | { 56 | (void)[self computeForSize:self.bounds.size apply:YES]; 57 | [super layoutSubviews]; 58 | } 59 | -(CGSize)sizeThatFits:(CGSize)size 60 | { 61 | return [self computeForSize:size apply:NO]; 62 | } 63 | 64 | -(CGSize)computeForSize:(CGSize)size apply:(BOOL)apply 65 | { 66 | CGSize cumul = margins; 67 | for(UIView* v in self.subviews) 68 | { 69 | CGRect f = v.frame; 70 | switch (horizontalAlignment) { 71 | case OHStackAlignmentStackFirstEdges: 72 | f.origin.x = cumul.width; 73 | cumul.width += f.size.width + spacing.width; 74 | break; 75 | case OHStackAlignmentStackLastEdges: 76 | f.origin.x = (self.bounds.size.width-cumul.width) - f.size.width; 77 | cumul.width += f.size.width + spacing.width; 78 | break; 79 | case OHStackAlignmentAlignFirstEdges: 80 | f.origin.x = margins.width; 81 | cumul.width = MAX(cumul.width , margins.width + f.size.width + spacing.width); 82 | break; 83 | case OHStackAlignmentAlignCenters: 84 | f.origin.x = (self.bounds.size.width-f.size.width)/2; 85 | cumul.width = MAX(cumul.width , margins.width + f.size.width + spacing.width); 86 | break; 87 | case OHStackAlignmentAlignLastEdges: 88 | f.origin.x = self.bounds.size.width-f.size.width-margins.width; 89 | cumul.width = MAX(cumul.width , margins.width + f.size.width + spacing.width); 90 | break; 91 | default: // OHStackAlignmentNone 92 | cumul.width = MAX(cumul.width , margins.width + f.origin.x+f.size.width + spacing.width); 93 | break; 94 | } 95 | switch (verticalAlignment) { 96 | case OHStackAlignmentStackFirstEdges: 97 | f.origin.y = cumul.height; 98 | cumul.height += f.size.height + spacing.height; 99 | break; 100 | case OHStackAlignmentStackLastEdges: 101 | f.origin.y = (self.bounds.size.height-cumul.height) - f.size.height; 102 | cumul.height += f.size.height + spacing.height; 103 | break; 104 | case OHStackAlignmentAlignFirstEdges: 105 | f.origin.y = margins.height; 106 | cumul.height = MAX(cumul.height , margins.height + f.size.height + spacing.height); 107 | break; 108 | case OHStackAlignmentAlignCenters: 109 | f.origin.y = (self.bounds.size.height-f.size.height)/2; 110 | cumul.height = MAX(cumul.height , margins.height + f.size.height + spacing.height); 111 | break; 112 | case OHStackAlignmentAlignLastEdges: 113 | f.origin.y = self.bounds.size.height-f.size.height-margins.height; 114 | cumul.height = MAX(cumul.height , margins.height + f.size.height + spacing.height); 115 | break; 116 | default: // OHStackAlignmentNone 117 | cumul.height = MAX(cumul.height , margins.height + f.origin.y+f.size.height + spacing.height); 118 | break; 119 | } 120 | if (apply) v.frame = f; 121 | } 122 | cumul.width -= spacing.width; 123 | cumul.height -= spacing.height; 124 | return CGSizeMake(cumul.width+margins.width, cumul.height+margins.height); 125 | } 126 | 127 | @end 128 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This class allows you to stack its subviews, and automatically layout its subviews. 2 | It update the position of every of its subviews automagically as soon as you modify the size of one of its subview. 3 | 4 | See the "StackView Example" project for a basic usage example 5 | -------------------------------------------------------------------------------- /StackView Example/Classes/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // StackView Example 4 | // 5 | // Created by Olivier on 16/01/11. 6 | // Copyright 2011 AliSoftware. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OHStackView.h" 11 | 12 | @interface AppDelegate : NSObject { 13 | IBOutlet OHStackView* verticalLayout; 14 | } 15 | -(IBAction)buttonTapped:(UIButton*)sender; 16 | @end 17 | -------------------------------------------------------------------------------- /StackView Example/Classes/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // StackView Example 4 | // 5 | // Created by Olivier on 16/01/11. 6 | // Copyright 2011 AliSoftware. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | 12 | @implementation AppDelegate 13 | 14 | -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 15 | verticalLayout.spacing = CGSizeMake(5,5); 16 | verticalLayout.horizontalAlignment = OHStackAlignmentAlignLeftEdges; 17 | verticalLayout.verticalAlignment = OHStackAlignmentStackFromTop; 18 | 19 | for(OHStackView* horizontalLayout in verticalLayout.subviews) { 20 | horizontalLayout.spacing = CGSizeMake(5,5); 21 | horizontalLayout.horizontalAlignment = OHStackAlignmentStackFromLeft; 22 | horizontalLayout.verticalAlignment = OHStackAlignmentAlignCenters; 23 | } 24 | 25 | return YES; 26 | } 27 | 28 | -(IBAction)buttonTapped:(UIButton*)sender { 29 | CGRect r = sender.frame; 30 | if (sender.selected) { 31 | r.size.width /= 2; 32 | r.size.height /= 2; 33 | } else { 34 | r.size.width *= 2; 35 | r.size.height *= 2; 36 | } 37 | sender.frame = r; 38 | sender.selected = !sender.selected; 39 | [sender.superview sizeToFit]; // resize parent HorizontalLayout 40 | } 41 | 42 | @end 43 | 44 | -------------------------------------------------------------------------------- /StackView Example/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10J567 6 | 823 7 | 1038.35 8 | 462.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | 45 | 1316 46 | 47 | YES 48 | 49 | 50 | 1316 51 | 52 | YES 53 | 54 | 55 | 1316 56 | 57 | YES 58 | 59 | 60 | 1316 61 | {44, 37} 62 | 63 | NO 64 | IBCocoaTouchFramework 65 | 0 66 | 0 67 | 68 | Helvetica-Bold 69 | 15 70 | 16 71 | 72 | 1 73 | A1 74 | 75 | 3 76 | MQA 77 | 78 | 79 | 1 80 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 81 | 82 | 83 | 3 84 | MC41AA 85 | 86 | 87 | 88 | 89 | 1316 90 | {{52, 0}, {44, 37}} 91 | 92 | NO 93 | IBCocoaTouchFramework 94 | 0 95 | 0 96 | 97 | 1 98 | A2 99 | 100 | 101 | 1 102 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 103 | 104 | 105 | 106 | 107 | 108 | 1316 109 | {{104, 0}, {44, 37}} 110 | 111 | NO 112 | IBCocoaTouchFramework 113 | 0 114 | 0 115 | 116 | 1 117 | A3 118 | 119 | 120 | 1 121 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 122 | 123 | 124 | 125 | 126 | {280, 37} 127 | 128 | 129 | IBCocoaTouchFramework 130 | 131 | 132 | 133 | 1316 134 | 135 | YES 136 | 137 | 138 | 1316 139 | {44, 37} 140 | 141 | NO 142 | IBCocoaTouchFramework 143 | 0 144 | 0 145 | 146 | 1 147 | B1 148 | 149 | 150 | 1 151 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 152 | 153 | 154 | 155 | 156 | 157 | 1316 158 | {{52, 0}, {44, 37}} 159 | 160 | NO 161 | IBCocoaTouchFramework 162 | 0 163 | 0 164 | 165 | 1 166 | B2 167 | 168 | 169 | 1 170 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 171 | 172 | 173 | 174 | 175 | 176 | 1316 177 | {{104, 0}, {44, 37}} 178 | 179 | NO 180 | IBCocoaTouchFramework 181 | 0 182 | 0 183 | 184 | 1 185 | B3 186 | 187 | 188 | 1 189 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 190 | 191 | 192 | 193 | 194 | {{0, 45}, {280, 37}} 195 | 196 | 197 | IBCocoaTouchFramework 198 | 199 | 200 | 201 | 1316 202 | 203 | YES 204 | 205 | 206 | 1316 207 | {44, 37} 208 | 209 | NO 210 | IBCocoaTouchFramework 211 | 0 212 | 0 213 | 214 | 1 215 | C1 216 | 217 | 218 | 1 219 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 220 | 221 | 222 | 223 | 224 | 225 | 1316 226 | {{52, 0}, {44, 37}} 227 | 228 | NO 229 | IBCocoaTouchFramework 230 | 0 231 | 0 232 | 233 | 1 234 | C2 235 | 236 | 237 | 1 238 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 239 | 240 | 241 | 242 | 243 | 244 | 1316 245 | {{104, 0}, {44, 37}} 246 | 247 | NO 248 | IBCocoaTouchFramework 249 | 0 250 | 0 251 | 252 | 1 253 | C3 254 | 255 | 256 | 1 257 | MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA 258 | 259 | 260 | 261 | 262 | {{0, 90}, {280, 37}} 263 | 264 | 265 | IBCocoaTouchFramework 266 | 267 | 268 | {{20, 40}, {280, 219}} 269 | 270 | 271 | IBCocoaTouchFramework 272 | 273 | 274 | 275 | 1316 276 | {{20, 410}, {280, 40}} 277 | 278 | NO 279 | YES 280 | 7 281 | NO 282 | IBCocoaTouchFramework 283 | Tap on a button to zoom it in or out 284 | 285 | 1 286 | MCAwIDAAA 287 | 288 | 289 | 1 290 | 10 291 | 2 292 | 1 293 | 294 | 295 | 296 | {320, 480} 297 | 298 | 299 | 1 300 | MSAxIDEAA 301 | 302 | NO 303 | NO 304 | 305 | IBCocoaTouchFramework 306 | YES 307 | YES 308 | 309 | 310 | 311 | 312 | YES 313 | 314 | 315 | delegate 316 | 317 | 318 | 319 | 38 320 | 321 | 322 | 323 | verticalLayout 324 | 325 | 326 | 327 | 39 328 | 329 | 330 | 331 | buttonTapped: 332 | 333 | 334 | 7 335 | 336 | 43 337 | 338 | 339 | 340 | buttonTapped: 341 | 342 | 343 | 7 344 | 345 | 81 346 | 347 | 348 | 349 | buttonTapped: 350 | 351 | 352 | 7 353 | 354 | 83 355 | 356 | 357 | 358 | buttonTapped: 359 | 360 | 361 | 7 362 | 363 | 88 364 | 365 | 366 | 367 | buttonTapped: 368 | 369 | 370 | 7 371 | 372 | 89 373 | 374 | 375 | 376 | buttonTapped: 377 | 378 | 379 | 7 380 | 381 | 90 382 | 383 | 384 | 385 | buttonTapped: 386 | 387 | 388 | 7 389 | 390 | 95 391 | 392 | 393 | 394 | buttonTapped: 395 | 396 | 397 | 7 398 | 399 | 96 400 | 401 | 402 | 403 | buttonTapped: 404 | 405 | 406 | 7 407 | 408 | 97 409 | 410 | 411 | 412 | 413 | YES 414 | 415 | 0 416 | 417 | 418 | 419 | 420 | 421 | 2 422 | 423 | 424 | YES 425 | 426 | 427 | 428 | 429 | 430 | 431 | -1 432 | 433 | 434 | File's Owner 435 | 436 | 437 | -2 438 | 439 | 440 | 441 | 442 | 36 443 | 444 | 445 | YES 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 27 454 | 455 | 456 | YES 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 37 465 | 466 | 467 | 468 | 469 | 40 470 | 471 | 472 | 473 | 474 | 41 475 | 476 | 477 | 478 | 479 | 80 480 | 481 | 482 | 483 | 484 | 82 485 | 486 | 487 | 488 | 489 | 84 490 | 491 | 492 | YES 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 85 501 | 502 | 503 | 504 | 505 | 86 506 | 507 | 508 | 509 | 510 | 87 511 | 512 | 513 | 514 | 515 | 91 516 | 517 | 518 | YES 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 92 527 | 528 | 529 | 530 | 531 | 93 532 | 533 | 534 | 535 | 536 | 94 537 | 538 | 539 | 540 | 541 | 542 | 543 | YES 544 | 545 | YES 546 | -1.CustomClassName 547 | -2.CustomClassName 548 | 2.IBAttributePlaceholdersKey 549 | 2.IBEditorWindowLastContentRect 550 | 2.IBPluginDependency 551 | 27.CustomClassName 552 | 27.IBPluginDependency 553 | 27.IBViewBoundsToFrameTransform 554 | 36.CustomClassName 555 | 36.IBPluginDependency 556 | 36.IBViewBoundsToFrameTransform 557 | 37.CustomClassName 558 | 37.IBPluginDependency 559 | 40.IBPluginDependency 560 | 40.IBViewBoundsToFrameTransform 561 | 41.IBPluginDependency 562 | 41.IBViewBoundsToFrameTransform 563 | 80.IBPluginDependency 564 | 80.IBViewBoundsToFrameTransform 565 | 82.IBPluginDependency 566 | 82.IBViewBoundsToFrameTransform 567 | 84.CustomClassName 568 | 84.IBPluginDependency 569 | 84.IBViewBoundsToFrameTransform 570 | 85.IBPluginDependency 571 | 85.IBViewBoundsToFrameTransform 572 | 86.IBPluginDependency 573 | 86.IBViewBoundsToFrameTransform 574 | 87.IBPluginDependency 575 | 87.IBViewBoundsToFrameTransform 576 | 91.CustomClassName 577 | 91.IBPluginDependency 578 | 91.IBViewBoundsToFrameTransform 579 | 92.IBPluginDependency 580 | 92.IBViewBoundsToFrameTransform 581 | 93.IBPluginDependency 582 | 93.IBViewBoundsToFrameTransform 583 | 94.IBPluginDependency 584 | 94.IBViewBoundsToFrameTransform 585 | 586 | 587 | YES 588 | UIApplication 589 | UIResponder 590 | 591 | YES 592 | 593 | 594 | YES 595 | 596 | 597 | {{673, 376}, {320, 480}} 598 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 599 | OHStackView 600 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 601 | 602 | OHStackView 603 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 604 | 605 | P4AAAL+AAABBoAAAw3AAAA 606 | 607 | AppDelegate 608 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 609 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 610 | 611 | P4AAAL+AAABCeAAAw98AAA 612 | 613 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 614 | 615 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 616 | 617 | AUJQAAAAAAAAA 618 | 619 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 620 | 621 | AUJQAAAAAAAAA 622 | 623 | OHStackView 624 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 625 | 626 | AQAAAABCNAAAA 627 | 628 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 629 | 630 | AUJQAAAAAAAAA 631 | 632 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 633 | 634 | AUJQAAAAAAAAA 635 | 636 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 637 | 638 | OHStackView 639 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 640 | 641 | AQAAAABCNAAAA 642 | 643 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 644 | 645 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 646 | 647 | AUJQAAAAAAAAA 648 | 649 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 650 | 651 | AUJQAAAAAAAAA 652 | 653 | 654 | 655 | 656 | YES 657 | 658 | 659 | YES 660 | 661 | 662 | 663 | 664 | YES 665 | 666 | 667 | YES 668 | 669 | 670 | 671 | 97 672 | 673 | 674 | 675 | YES 676 | 677 | AppDelegate 678 | NSObject 679 | 680 | buttonTapped: 681 | UIButton 682 | 683 | 684 | buttonTapped: 685 | 686 | buttonTapped: 687 | UIButton 688 | 689 | 690 | 691 | verticalLayout 692 | OHStackView 693 | 694 | 695 | verticalLayout 696 | 697 | verticalLayout 698 | OHStackView 699 | 700 | 701 | 702 | IBProjectSource 703 | Classes/AppDelegate.h 704 | 705 | 706 | 707 | OHStackView 708 | UIView 709 | 710 | IBProjectSource 711 | ../OHStackView.h 712 | 713 | 714 | 715 | OHStackView 716 | UIView 717 | 718 | IBUserSource 719 | 720 | 721 | 722 | 723 | UIWindow 724 | UIView 725 | 726 | IBUserSource 727 | 728 | 729 | 730 | 731 | 732 | YES 733 | 734 | NSObject 735 | 736 | IBFrameworkSource 737 | Foundation.framework/Headers/NSError.h 738 | 739 | 740 | 741 | NSObject 742 | 743 | IBFrameworkSource 744 | Foundation.framework/Headers/NSFileManager.h 745 | 746 | 747 | 748 | NSObject 749 | 750 | IBFrameworkSource 751 | Foundation.framework/Headers/NSKeyValueCoding.h 752 | 753 | 754 | 755 | NSObject 756 | 757 | IBFrameworkSource 758 | Foundation.framework/Headers/NSKeyValueObserving.h 759 | 760 | 761 | 762 | NSObject 763 | 764 | IBFrameworkSource 765 | Foundation.framework/Headers/NSKeyedArchiver.h 766 | 767 | 768 | 769 | NSObject 770 | 771 | IBFrameworkSource 772 | Foundation.framework/Headers/NSObject.h 773 | 774 | 775 | 776 | NSObject 777 | 778 | IBFrameworkSource 779 | Foundation.framework/Headers/NSRunLoop.h 780 | 781 | 782 | 783 | NSObject 784 | 785 | IBFrameworkSource 786 | Foundation.framework/Headers/NSThread.h 787 | 788 | 789 | 790 | NSObject 791 | 792 | IBFrameworkSource 793 | Foundation.framework/Headers/NSURL.h 794 | 795 | 796 | 797 | NSObject 798 | 799 | IBFrameworkSource 800 | Foundation.framework/Headers/NSURLConnection.h 801 | 802 | 803 | 804 | NSObject 805 | 806 | IBFrameworkSource 807 | UIKit.framework/Headers/UIAccessibility.h 808 | 809 | 810 | 811 | NSObject 812 | 813 | IBFrameworkSource 814 | UIKit.framework/Headers/UINibLoading.h 815 | 816 | 817 | 818 | NSObject 819 | 820 | IBFrameworkSource 821 | UIKit.framework/Headers/UIResponder.h 822 | 823 | 824 | 825 | UIApplication 826 | UIResponder 827 | 828 | IBFrameworkSource 829 | UIKit.framework/Headers/UIApplication.h 830 | 831 | 832 | 833 | UIButton 834 | UIControl 835 | 836 | IBFrameworkSource 837 | UIKit.framework/Headers/UIButton.h 838 | 839 | 840 | 841 | UIControl 842 | UIView 843 | 844 | IBFrameworkSource 845 | UIKit.framework/Headers/UIControl.h 846 | 847 | 848 | 849 | UILabel 850 | UIView 851 | 852 | IBFrameworkSource 853 | UIKit.framework/Headers/UILabel.h 854 | 855 | 856 | 857 | UIResponder 858 | NSObject 859 | 860 | 861 | 862 | UISearchBar 863 | UIView 864 | 865 | IBFrameworkSource 866 | UIKit.framework/Headers/UISearchBar.h 867 | 868 | 869 | 870 | UISearchDisplayController 871 | NSObject 872 | 873 | IBFrameworkSource 874 | UIKit.framework/Headers/UISearchDisplayController.h 875 | 876 | 877 | 878 | UIView 879 | 880 | IBFrameworkSource 881 | UIKit.framework/Headers/UIPrintFormatter.h 882 | 883 | 884 | 885 | UIView 886 | 887 | IBFrameworkSource 888 | UIKit.framework/Headers/UITextField.h 889 | 890 | 891 | 892 | UIView 893 | UIResponder 894 | 895 | IBFrameworkSource 896 | UIKit.framework/Headers/UIView.h 897 | 898 | 899 | 900 | UIViewController 901 | 902 | IBFrameworkSource 903 | UIKit.framework/Headers/UINavigationController.h 904 | 905 | 906 | 907 | UIViewController 908 | 909 | IBFrameworkSource 910 | UIKit.framework/Headers/UIPopoverController.h 911 | 912 | 913 | 914 | UIViewController 915 | 916 | IBFrameworkSource 917 | UIKit.framework/Headers/UISplitViewController.h 918 | 919 | 920 | 921 | UIViewController 922 | 923 | IBFrameworkSource 924 | UIKit.framework/Headers/UITabBarController.h 925 | 926 | 927 | 928 | UIViewController 929 | UIResponder 930 | 931 | IBFrameworkSource 932 | UIKit.framework/Headers/UIViewController.h 933 | 934 | 935 | 936 | UIWindow 937 | UIView 938 | 939 | IBFrameworkSource 940 | UIKit.framework/Headers/UIWindow.h 941 | 942 | 943 | 944 | 945 | 0 946 | IBCocoaTouchFramework 947 | 948 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 949 | 950 | 951 | 952 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 953 | 954 | 955 | YES 956 | StackView Example.xcodeproj 957 | 3 958 | 132 959 | 960 | 961 | -------------------------------------------------------------------------------- /StackView Example/StackView Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 45; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 095274CE12E2707100BB5534 /* OHStackView.m in Sources */ = {isa = PBXBuildFile; fileRef = 095274CD12E2707100BB5534 /* OHStackView.m */; }; 11 | 0952756D12E27C1100BB5534 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 0952756B12E27C1100BB5534 /* LICENSE */; }; 12 | 0952756E12E27C1100BB5534 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 0952756C12E27C1100BB5534 /* README */; }; 13 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 14 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 15 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 16 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; 17 | 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; 18 | 28C286E10D94DF7D0034E888 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* AppDelegate.m */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 095274CC12E2707100BB5534 /* OHStackView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OHStackView.h; path = ../OHStackView.h; sourceTree = SOURCE_ROOT; }; 23 | 095274CD12E2707100BB5534 /* OHStackView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OHStackView.m; path = ../OHStackView.m; sourceTree = SOURCE_ROOT; }; 24 | 0952756B12E27C1100BB5534 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = SOURCE_ROOT; }; 25 | 0952756C12E27C1100BB5534 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../README; sourceTree = SOURCE_ROOT; }; 26 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 27 | 1D6058910D05DD3D006BFB54 /* StackView Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "StackView Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 29 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 30 | 28A0AAE50D9B0CCF005BE974 /* StackView_Example_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StackView_Example_Prefix.pch; sourceTree = ""; }; 31 | 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 32 | 28C286DF0D94DF7D0034E888 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 33 | 28C286E00D94DF7D0034E888 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 34 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 35 | 8D1107310486CEB800E47090 /* StackView_Example-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "StackView_Example-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 36 | /* End PBXFileReference section */ 37 | 38 | /* Begin PBXFrameworksBuildPhase section */ 39 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 40 | isa = PBXFrameworksBuildPhase; 41 | buildActionMask = 2147483647; 42 | files = ( 43 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 44 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 45 | 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, 46 | ); 47 | runOnlyForDeploymentPostprocessing = 0; 48 | }; 49 | /* End PBXFrameworksBuildPhase section */ 50 | 51 | /* Begin PBXGroup section */ 52 | 080E96DDFE201D6D7F000001 /* Classes */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | 28C286DF0D94DF7D0034E888 /* AppDelegate.h */, 56 | 28C286E00D94DF7D0034E888 /* AppDelegate.m */, 57 | ); 58 | path = Classes; 59 | sourceTree = ""; 60 | }; 61 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 62 | isa = PBXGroup; 63 | children = ( 64 | 1D6058910D05DD3D006BFB54 /* StackView Example.app */, 65 | ); 66 | name = Products; 67 | sourceTree = ""; 68 | }; 69 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 70 | isa = PBXGroup; 71 | children = ( 72 | 0952756B12E27C1100BB5534 /* LICENSE */, 73 | 0952756C12E27C1100BB5534 /* README */, 74 | 095274CC12E2707100BB5534 /* OHStackView.h */, 75 | 095274CD12E2707100BB5534 /* OHStackView.m */, 76 | 080E96DDFE201D6D7F000001 /* Classes */, 77 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 78 | 29B97317FDCFA39411CA2CEA /* Resources */, 79 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 80 | 19C28FACFE9D520D11CA2CBB /* Products */, 81 | ); 82 | name = CustomTemplate; 83 | sourceTree = ""; 84 | }; 85 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 28A0AAE50D9B0CCF005BE974 /* StackView_Example_Prefix.pch */, 89 | 29B97316FDCFA39411CA2CEA /* main.m */, 90 | ); 91 | name = "Other Sources"; 92 | sourceTree = ""; 93 | }; 94 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 95 | isa = PBXGroup; 96 | children = ( 97 | 28AD735F0D9D9599002E5188 /* MainWindow.xib */, 98 | 8D1107310486CEB800E47090 /* StackView_Example-Info.plist */, 99 | ); 100 | name = Resources; 101 | sourceTree = ""; 102 | }; 103 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 104 | isa = PBXGroup; 105 | children = ( 106 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 107 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 108 | 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, 109 | ); 110 | name = Frameworks; 111 | sourceTree = ""; 112 | }; 113 | /* End PBXGroup section */ 114 | 115 | /* Begin PBXNativeTarget section */ 116 | 1D6058900D05DD3D006BFB54 /* StackView Example */ = { 117 | isa = PBXNativeTarget; 118 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "StackView Example" */; 119 | buildPhases = ( 120 | 1D60588D0D05DD3D006BFB54 /* Resources */, 121 | 1D60588E0D05DD3D006BFB54 /* Sources */, 122 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 123 | ); 124 | buildRules = ( 125 | ); 126 | dependencies = ( 127 | ); 128 | name = "StackView Example"; 129 | productName = "StackView Example"; 130 | productReference = 1D6058910D05DD3D006BFB54 /* StackView Example.app */; 131 | productType = "com.apple.product-type.application"; 132 | }; 133 | /* End PBXNativeTarget section */ 134 | 135 | /* Begin PBXProject section */ 136 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 137 | isa = PBXProject; 138 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "StackView Example" */; 139 | compatibilityVersion = "Xcode 3.1"; 140 | developmentRegion = English; 141 | hasScannedForEncodings = 1; 142 | knownRegions = ( 143 | English, 144 | Japanese, 145 | French, 146 | German, 147 | en, 148 | ); 149 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 150 | projectDirPath = ""; 151 | projectRoot = ""; 152 | targets = ( 153 | 1D6058900D05DD3D006BFB54 /* StackView Example */, 154 | ); 155 | }; 156 | /* End PBXProject section */ 157 | 158 | /* Begin PBXResourcesBuildPhase section */ 159 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 160 | isa = PBXResourcesBuildPhase; 161 | buildActionMask = 2147483647; 162 | files = ( 163 | 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, 164 | 0952756D12E27C1100BB5534 /* LICENSE in Resources */, 165 | 0952756E12E27C1100BB5534 /* README in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXSourcesBuildPhase section */ 172 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 173 | isa = PBXSourcesBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 177 | 28C286E10D94DF7D0034E888 /* AppDelegate.m in Sources */, 178 | 095274CE12E2707100BB5534 /* OHStackView.m in Sources */, 179 | ); 180 | runOnlyForDeploymentPostprocessing = 0; 181 | }; 182 | /* End PBXSourcesBuildPhase section */ 183 | 184 | /* Begin XCBuildConfiguration section */ 185 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 186 | isa = XCBuildConfiguration; 187 | buildSettings = { 188 | ALWAYS_SEARCH_USER_PATHS = NO; 189 | COPY_PHASE_STRIP = NO; 190 | GCC_DYNAMIC_NO_PIC = NO; 191 | GCC_OPTIMIZATION_LEVEL = 0; 192 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 193 | GCC_PREFIX_HEADER = StackView_Example_Prefix.pch; 194 | INFOPLIST_FILE = "StackView_Example-Info.plist"; 195 | PRODUCT_NAME = "StackView Example"; 196 | }; 197 | name = Debug; 198 | }; 199 | 1D6058950D05DD3E006BFB54 /* Release */ = { 200 | isa = XCBuildConfiguration; 201 | buildSettings = { 202 | ALWAYS_SEARCH_USER_PATHS = NO; 203 | COPY_PHASE_STRIP = YES; 204 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 205 | GCC_PREFIX_HEADER = StackView_Example_Prefix.pch; 206 | INFOPLIST_FILE = "StackView_Example-Info.plist"; 207 | PRODUCT_NAME = "StackView Example"; 208 | VALIDATE_PRODUCT = YES; 209 | }; 210 | name = Release; 211 | }; 212 | C01FCF4F08A954540054247B /* Debug */ = { 213 | isa = XCBuildConfiguration; 214 | buildSettings = { 215 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 216 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 217 | GCC_C_LANGUAGE_STANDARD = c99; 218 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 219 | GCC_WARN_UNUSED_VARIABLE = YES; 220 | PREBINDING = NO; 221 | SDKROOT = iphoneos; 222 | }; 223 | name = Debug; 224 | }; 225 | C01FCF5008A954540054247B /* Release */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | GCC_C_LANGUAGE_STANDARD = c99; 231 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 232 | GCC_WARN_UNUSED_VARIABLE = YES; 233 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 234 | PREBINDING = NO; 235 | SDKROOT = iphoneos; 236 | }; 237 | name = Release; 238 | }; 239 | /* End XCBuildConfiguration section */ 240 | 241 | /* Begin XCConfigurationList section */ 242 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "StackView Example" */ = { 243 | isa = XCConfigurationList; 244 | buildConfigurations = ( 245 | 1D6058940D05DD3E006BFB54 /* Debug */, 246 | 1D6058950D05DD3E006BFB54 /* Release */, 247 | ); 248 | defaultConfigurationIsVisible = 0; 249 | defaultConfigurationName = Release; 250 | }; 251 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "StackView Example" */ = { 252 | isa = XCConfigurationList; 253 | buildConfigurations = ( 254 | C01FCF4F08A954540054247B /* Debug */, 255 | C01FCF5008A954540054247B /* Release */, 256 | ); 257 | defaultConfigurationIsVisible = 0; 258 | defaultConfigurationName = Release; 259 | }; 260 | /* End XCConfigurationList section */ 261 | }; 262 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 263 | } 264 | -------------------------------------------------------------------------------- /StackView Example/StackView_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /StackView Example/StackView_Example_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'StackView Example' target in the 'StackView Example' project 3 | // 4 | #import 5 | 6 | #ifndef __IPHONE_3_0 7 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 8 | #endif 9 | 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /StackView Example/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // StackView Example 4 | // 5 | // Created by Olivier on 16/01/11. 6 | // Copyright 2011 AliSoftware. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | --------------------------------------------------------------------------------